{"id":163,"date":"2017-10-29T22:56:55","date_gmt":"2017-10-29T22:56:55","guid":{"rendered":"http:\/\/dart.honobono-life.info\/?p=163"},"modified":"2017-10-29T22:56:55","modified_gmt":"2017-10-29T22:56:55","slug":"angulardart-v4-http-get","status":"publish","type":"post","link":"http:\/\/dart.honobono-life.info\/?p=163","title":{"rendered":"AngularDart v4 Http Get"},"content":{"rendered":"AngularDart v4 Sample Code,Demo<br \/>\r\n<!--more-->\r\n<ul>\r\n<li>AngularDart : 4.0.0<\/li>\r\n<li>Dart : 1.24.1<\/li>\r\n<\/ul>\r\n<div role=\"tabpanel\">\r\n  <ul class=\"nav nav-tabs\">\r\n    <li class=\"active\"><a href=\"#demo1\" data-toggle=\"tab\">demo<\/a><\/li>\r\n    <li><a href=\"#html1\" data-toggle=\"tab\">markup<\/a><\/li>\r\n    <li><a href=\"#script1\" data-toggle=\"tab\">dart<\/a><\/li>\r\n  <\/ul>\r\n  <div class=\"tab-content\">\r\n    <div class=\"tab-pane active\" id=\"demo1\">\r\n\r\n<my-app>Loading&#8230;<\/my-app>\r\n\r\n    <\/div>\r\n    <div class=\"tab-pane\" id=\"html1\">\r\n\r\n<pre>\r\n(html)\r\n&lt;head>\r\n.....\r\n  &lt;script defer src=\"main.dart\" type=\"application\/dart\">&lt;\/script>\r\n  &lt;script defer src=\"packages\/browser\/dart.js\">&lt;\/script>\r\n&lt;\/head>\r\n&lt;body>\r\n  &lt;my-app>Loading...&lt;\/my-app>\r\n&lt;\/body>\r\n\r\n(pubspec.yaml)\r\n.....\r\nenvironment:\r\n  sdk: '>=1.24.0 <2.0.0'\r\ndependencies:\r\n  angular: ^4.0.0\r\n  angular_forms: ^1.0.0\r\n  angular_router: ^1.0.2\r\n  http: ^0.11.0\r\n  stream_transform: ^0.0.6\r\n\r\ndev_dependencies:\r\n  angular_test: ^1.0.0\r\n  browser: ^0.10.0\r\n  dart_to_js_script_rewriter: ^1.0.1\r\n  mockito: ^2.0.2\r\n  test: ^0.12.21\r\n\r\ntransformers:\r\n- angular:\r\n    entry_points:\r\n    - web\/main.dart\r\n    - test\/**_test.dart\r\n- test\/pub_serve:\r\n    $include: test\/**_test.dart\r\n- dart_to_js_script_rewriter\r\n<\/pre>\r\n    <\/div>\r\n\r\n    <div class=\"tab-pane\" id=\"script1\">\r\n<pre>\r\n(main.dart)\r\nimport 'dart:async';\r\nimport 'dart:convert';\r\n\r\nimport 'package:angular\/angular.dart';\r\nimport 'package:http\/browser_client.dart';\r\n\r\nimport 'http_service.dart';\r\n\r\nclass Friend {\r\n  int id;\r\n  String name;\r\n  int age;\r\n  String address;\r\n\r\n  Friend(this.id,this.name,this.age,this.address);\r\n}\r\n\r\n@Component(\r\n    selector: 'my-app',\r\n    template: '''\r\n    &lt;ul>\r\n      &lt;li *ngFor=\"let friend of friends\">\r\n        &lt;span class=\"badge badge-default\">{{friend.id}}&lt;\/span> {{friend.name}}\r\n      &lt;\/li>\r\n    &lt;\/ul>\r\n    &lt;button (click)=\"get1(true)\">Http Get&lt;\/button>\r\n    &lt;button (click)=\"get1(false)\">Http Get Error&lt;\/button>&lt;br \/>\r\n    &lt;div *ngIf=\"show\">\r\n      &lt;strong>Http Response Data&lt;\/strong>&lt;br \/>\r\n      &lt;table class=\"table table-striped\">\r\n        &lt;thead>&lt;tr>\r\n          &lt;th>\u2116&lt;\/th>&lt;th>Name&lt;\/th>&lt;th>Age&lt;\/th>&lt;th>Address&lt;\/th>\r\n        &lt;\/tr>&lt;\/thead>\r\n        &lt;tbody>\r\n          &lt;tr *ngFor=\"let item of friends1\">\r\n            &lt;td>{{item.id}}&lt;\/td>\r\n            &lt;td>{{item.name}}&lt;\/td>\r\n            &lt;td>{{item.age}}&lt;\/td>\r\n            &lt;td>{{item.address}}&lt;\/td>\r\n          &lt;\/tr>\r\n        &lt;\/tbody>\r\n      &lt;\/table>\r\n    &lt;\/div>\r\n    &lt;div *ngIf=\"!show\">\r\n      &lt;strong>HTTP Error&lt;\/strong>&lt;br \/>\r\n      &lt;span>Status Code: {{status}}&lt;\/span>&lt;br \/>\r\n      &lt;span>Error Comment: {{error}}&lt;\/span>&lt;br \/>\r\n    &lt;\/div>\r\n    ''',\r\n    directives: const [CORE_DIRECTIVES],\r\n    providers: const [HttpService]\r\n)\r\nclass AppComponent implements OnInit {\r\n  String error;\r\n  int status;\r\n  bool show = false;\r\n  List&lt;Friend> friends;\r\n  List&lt;Friend> friends1;\r\n  HttpService _httpService;\r\n  String _url = \"json\/friends.json\";\r\n  AppComponent(this._httpService);\r\n\r\n  Future&lt;Null> get(String url) async {\r\n    friends = await _httpService.get(url);\r\n  }\r\n  void ngOnInit() {\r\n    get(_url);\r\n  }\r\n  void get1(bool tf) async {\r\n    show = tf;\r\n    var client = new BrowserClient();\r\n    if (tf) {\r\n      await client.get('json\/friends.json')\r\n      .then((response) {\r\n        friends1 = JSON.decode(response.body)['data']\r\n        .map((value) => new Friend(value['id'], value['name'],value['age'],value['address']))\r\n        .toList();\r\n      })\r\n      .catchError((e) {\r\n        error = e;\r\n      });\r\n    } else {\r\n      await client.get('invalid-url')\r\n      .then((response) {\r\n        status = response.statusCode;\r\n        error = response.body.substring(50,100);\r\n      })\r\n      .catchError((e) {\r\n        error = e;\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nvoid main() {\r\n  bootstrap(AppComponent, [provide(BrowserClient, useFactory: () => new BrowserClient(), deps: [])]\r\n  );\r\n}\r\n\r\n\r\n(http_service.dart)\r\nimport 'dart:async';\r\nimport 'dart:convert';\r\n\r\nimport 'package:angular\/angular.dart';\r\nimport 'package:http\/browser_client.dart';\r\n\r\nclass Friend {\r\n  int id;\r\n  String name;\r\n  int age;\r\n  String address;\r\n\r\n  Friend(this.id,this.name,this.age,this.address);\r\n}\r\n\r\n@Injectable()\r\nclass HttpService {\r\n  BrowserClient _http;\r\n  HttpService(this._http);\r\n\r\n  Future&lt;List&lt;Friend>> get(String url) async {\r\n    try {\r\n      final response = await _http.get(url);\r\n      List&lt;Friend> friends = JSON.decode(response.body)['data']\r\n          .map((value) => new Friend(value['id'], value['name'],value['age'],value['address']))\r\n          .toList();\r\n      return friends;\r\n    } catch (e) {\r\n      throw _handleError(e);\r\n    }\r\n  }\r\n\r\n  Exception _handleError(dynamic e) {\r\n    print(e); \/\/ for demo purposes only\r\n    return new Exception('Server error; cause: $e');\r\n  }\r\n\r\n}\r\n\r\n(friends.json)\r\n{\r\n   \"data\": [\r\n  {\"id\": 1, \"name\": \"John\", \"age\": 20, \"address\": \"1st Ave Seattle WA\"},\r\n  {\"id\": 2, \"name\": \"Jessie\", \"age\": 55, \"address\": \"2nd Ave Seattle WA\"},\r\n  {\"id\": 3, \"name\": \"Peter\", \"age\": 20, \"address\": \"Mercer St Seattle WA\"},\r\n  {\"id\": 4, \"name\": \"Erika\", \"age\": 37, \"address\": \"Alaskan Way Seattle WA\"}\r\n    ]\r\n}\r\n<\/pre>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n<script type=\"text\/javascript\"  src='http:\/\/dart.honobono-life.info\/wp-content\/themes\/ang\/ngdart4\/http.dart.js'><\/script>","protected":false},"excerpt":{"rendered":"<p>AngularDart v4 Sample Code,Demo<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/posts\/163"}],"collection":[{"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163"}],"version-history":[{"count":1,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":164,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions\/164"}],"wp:attachment":[{"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dart.honobono-life.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}