payload: {"action":"created","comment":{"url":"https://api.github.com/repos/flutter/flutter/pulls/comments/327149087","pull_request_review_id":291817114,"id":327149087,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyNzE0OTA4Nw==","diff_hunk":"@@ -0,0 +1,249 @@\n+// Copyright 2019-present the Flutter authors. All Rights Reserved.\n+//\n+// Licensed under the Apache License, Version 2.0 (the \"License\");\n+// you may not use this file except in compliance with the License.\n+// You may obtain a copy of the License at\n+//\n+// http://www.apache.org/licenses/LICENSE-2.0\n+//\n+// Unless required by applicable law or agreed to in writing, software\n+// distributed under the License is distributed on an \"AS IS\" BASIS,\n+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+// See the License for the specific language governing permissions and\n+// limitations under the License.\n+\n+import 'dart:math';\n+\n+import 'package:flutter/material.dart';\n+import 'package:flutter/rendering.dart';\n+import 'package:flutter/widgets.dart';\n+\n+import 'package:flutter_gallery/demo/rally/colors.dart';\n+import 'package:flutter_gallery/demo/rally/data.dart';\n+import 'package:flutter_gallery/demo/rally/formatters.dart';\n+\n+/// A colored piece of the [RallyPieChart].\n+class RallyPieChartSegment {\n+  const RallyPieChartSegment({this.color, this.value});\n+\n+  final Color color;\n+  final double value;\n+}\n+\n+List<RallyPieChartSegment> buildSegmentsFromAccountItems(\n+    List<AccountData> items) {\n+  return List<RallyPieChartSegment>.generate(\n+    items.length,\n+    (int i) => RallyPieChartSegment(\n+      color: RallyColors.accountColor(i),\n+      value: items[i].primaryAmount,\n+    ),\n+  );\n+}\n+\n+List<RallyPieChartSegment> buildSegmentsFromBillItems(List<BillData> items) {\n+  return List<RallyPieChartSegment>.generate(\n+    items.length,\n+    (int i) => RallyPieChartSegment(\n+      color: RallyColors.billColor(i),\n+      value: items[i].primaryAmount,\n+    ),\n+  );\n+}\n+\n+List<RallyPieChartSegment> buildSegmentsFromBudgetItems(\n+    List<BudgetData> items) {\n+  return List<RallyPieChartSegment>.generate(\n+    items.length,\n+    (int i) => RallyPieChartSegment(\n+      color: RallyColors.budgetColor(i),\n+      value: items[i].primaryAmount - items[i].amountUsed,\n+    ),\n+  );\n+}\n+\n+/// An animated circular pie chart to represent pieces of a whole, which can\n+/// have empty space.\n+class RallyPieChart extends StatefulWidget {\n+  const RallyPieChart(\n+      {this.heroLabel, this.heroAmount, this.wholeAmount, this.segments});\n+\n+  final String heroLabel;\n+  final double heroAmount;\n+  final double wholeAmount;\n+  final List<RallyPieChartSegment> segments;\n+\n+  @override\n+  _RallyPieChartState createState() => _RallyPieChartState();\n+}\n+\n+class _RallyPieChartState extends State<RallyPieChart>\n+    with SingleTickerProviderStateMixin {\n+  AnimationController controller;\n+  Animation<double> animation;\n+\n+  @override\n+  void initState() {\n+    super.initState();\n+    controller = AnimationController(\n+        duration: const Duration(milliseconds: 600), vsync: this);\n+    animation = CurvedAnimation(\n+        parent: TweenSequence<double>(<TweenSequenceItem<double>>[\n+          TweenSequenceItem<double>(\n+            tween: Tween<double>(begin: 0.0, end: 0.0),\n+            weight: 1.0,\n+          ),\n+          TweenSequenceItem<double>(\n+            tween: Tween<double>(begin: 0.0, end: 1.0),\n+            weight: 1.5,\n+          ),\n+        ]).animate(controller),\n+        curve: Curves.decelerate);\n+    controller.forward();\n+  }\n+\n+  @override\n+  void dispose() {\n+    controller.dispose();\n+    super.dispose();\n+  }\n+\n+  @override\n+  Widget build(BuildContext context) {\n+    return _AnimatedRallyPieChart(\n+      animation: animation,\n+      centerLabel: widget.heroLabel,\n+      centerAmount: widget.heroAmount,\n+      total: widget.wholeAmount,\n+      segments: widget.segments,\n+    );\n+  }\n+}\n+\n+class _AnimatedRallyPieChart extends AnimatedWidget {\n+  const _AnimatedRallyPieChart({\n+    Key key,\n+    this.animation,\n+    this.centerLabel,\n+    this.centerAmount,\n+    this.total,\n+    this.segments,\n+  }) : super(key: key, listenable: animation);\n+\n+  final Animation<double> animation;\n+  final String centerLabel;\n+  final double centerAmount;\n+  final double total;\n+  final List<RallyPieChartSegment> segments;\n+\n+  @override\n+  Widget build(BuildContext context) {\n+    final TextStyle labelTextStyle = Theme.of(context)\n+        .textTheme\n+        .body1\n+        .copyWith(fontSize: 14.0, letterSpacing: 0.5);\n+\n+    return DecoratedBox(\n+      decoration: _RallyPieChartOutlineDecoration(\n+          maxFraction: animation.value, total: total, segments: segments),\n+      child: SizedBox(\n+        height: 300.0,\n+        child: Center(\n+          child: Column(\n+            mainAxisAlignment: MainAxisAlignment.center,\n+            children: <Widget>[\n+              Text(\n+                centerLabel,\n+                style: labelTextStyle,\n+              ),\n+              Text(\n+                usdWithSignFormat.format(centerAmount),\n+                style: Theme.of(context).textTheme.headline,\n+              ),\n+            ],\n+          ),\n+        ),\n+      ),\n+    );\n+  }\n+}\n+\n+class _RallyPieChartOutlineDecoration extends Decoration {\n+  const _RallyPieChartOutlineDecoration(\n+      {this.maxFraction, this.total, this.segments});\n+\n+  final double maxFraction;\n+  final double total;\n+  final List<RallyPieChartSegment> segments;\n+\n+  @override\n+  BoxPainter createBoxPainter([VoidCallback onChanged]) {\n+    return _RallyPieChartOutlineBoxPainter(\n+      maxFraction: maxFraction,\n+      wholeAmount: total,\n+      segments: segments,\n+    );\n+  }\n+}\n+\n+class _RallyPieChartOutlineBoxPainter extends BoxPainter {\n+  _RallyPieChartOutlineBoxPainter(\n+      {this.maxFraction, this.wholeAmount, this.segments});\n+\n+  final double maxFraction;\n+  final double wholeAmount;\n+  final List<RallyPieChartSegment> segments;\n+\n+  @override\n+  void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {\n+    // Create two padded reacts to draw arcs in: one for colored arcs and one for\n+    // inner bg arc.\n+    const double strokeWidth = 4.0;\n+    final double outerRadius =\n+        min(configuration.size.width, configuration.size.height) / 2;\n+    final Rect outerRect = Rect.fromCircle(\n+        center: configuration.size.center(Offset.zero),\n+        radius: outerRadius - strokeWidth * 3.0);\n+    final Rect innerRect = Rect.fromCircle(\n+        center: configuration.size.center(Offset.zero),\n+        radius: outerRadius - strokeWidth * 4.0);\n+\n+    // Paint each arc with spacing.\n+    double cumulativeSpace = 0.0;\n+    double cumulativeTotal = 0.0;\n+    const double wholeRadians = 2.0 * pi;\n+    const double spaceRadians = wholeRadians / 180.0;\n+    final double wholeMinusSpacesRadians =\n+        wholeRadians - (segments.length * spaceRadians);\n+    for (RallyPieChartSegment segment in segments) {\n+      final Paint paint = Paint()..color = segment.color;\n+      final double start = maxFraction *","path":"examples/flutter_gallery/lib/demo/rally/charts/pie_chart.dart","position":220,"original_position":220,"commit_id":"626f005bf4739c3e387c524f4449313859847fb1","original_commit_id":"626f005bf4739c3e387c524f4449313859847fb1","user":{"login":"clocksmith","id":591699,"node_id":"MDQ6VXNlcjU5MTY5OQ==","avatar_url":"https://avatars1.githubusercontent.com/u/591699?v=4","gravatar_id":"","url":"https://api.github.com/users/clocksmith","html_url":"https://github.com/clocksmith","followers_url":"https://api.github.com/users/clocksmith/followers","following_url":"https://api.github.com/users/clocksmith/following{/other_user}","gists_url":"https://api.github.com/users/clocksmith/gists{/gist_id}","starred_url":"https://api.github.com/users/clocksmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clocksmith/subscriptions","organizations_url":"https://api.github.com/users/clocksmith/orgs","repos_url":"https://api.github.com/users/clocksmith/repos","events_url":"https://api.github.com/users/clocksmith/events{/privacy}","received_events_url":"https://api.github.com/users/clocksmith/received_events","type":"User","site_admin":false},"body":"1 line","created_at":"2019-09-23T14:33:10Z","updated_at":"2019-09-23T14:40:42Z","html_url":"https://github.com/flutter/flutter/pull/41090#discussion_r327149087","pull_request_url":"https://api.github.com/repos/flutter/flutter/pulls/41090","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments/327149087"},"html":{"href":"https://github.com/flutter/flutter/pull/41090#discussion_r327149087"},"pull_request":{"href":"https://api.github.com/repos/flutter/flutter/pulls/41090"}}},"pull_request":{"url":"https://api.github.com/repos/flutter/flutter/pulls/41090","id":320224516,"node_id":"MDExOlB1bGxSZXF1ZXN0MzIwMjI0NTE2","html_url":"https://github.com/flutter/flutter/pull/41090","diff_url":"https://github.com/flutter/flutter/pull/41090.diff","patch_url":"https://github.com/flutter/flutter/pull/41090.patch","issue_url":"https://api.github.com/repos/flutter/flutter/issues/41090","number":41090,"state":"open","locked":false,"title":"[Gallery] Add Material Study app Rally as an example app","user":{"login":"perclasson","id":1770678,"node_id":"MDQ6VXNlcjE3NzA2Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1770678?v=4","gravatar_id":"","url":"https://api.github.com/users/perclasson","html_url":"https://github.com/perclasson","followers_url":"https://api.github.com/users/perclasson/followers","following_url":"https://api.github.com/users/perclasson/following{/other_user}","gists_url":"https://api.github.com/users/perclasson/gists{/gist_id}","starred_url":"https://api.github.com/users/perclasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perclasson/subscriptions","organizations_url":"https://api.github.com/users/perclasson/orgs","repos_url":"https://api.github.com/users/perclasson/repos","events_url":"https://api.github.com/users/perclasson/events{/privacy}","received_events_url":"https://api.github.com/users/perclasson/received_events","type":"User","site_admin":false},"body":"## Description\r\n\r\nAdds a Flutter sample app based on the [Material study Rally](https://github.com/flutter/samples/tree/master/material_studies/rally/lib) (a hypothetical, personal finance app). It showcases custom tabs, custom painted widgets, and custom animations.\r\n\r\n![Simulator Screen Shot - iPhone Xʀ - 2019-09-23 at 11 17 25](https://user-images.githubusercontent.com/1770678/65414812-bb8f4c00-ddf4-11e9-87fa-3e7790f52798.png)\r\n![Simulator Screen Shot - iPhone Xʀ - 2019-09-23 at 11 17 29](https://user-images.githubusercontent.com/1770678/65414813-bb8f4c00-ddf4-11e9-85cb-d1c72b1f09f2.png)\r\n![Simulator Screen Shot - iPhone Xʀ - 2019-09-23 at 11 17 32](https://user-images.githubusercontent.com/1770678/65414814-bb8f4c00-ddf4-11e9-9b74-f6aca85a740f.png)\r\n\r\n\r\n## Related Issues\r\n\r\nN/A\r\n\r\n## Tests\r\n\r\nI added the following tests:\r\n\r\nN/A\r\n\r\n## Checklist\r\n\r\n- [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.\r\n- [X] I signed the [CLA].\r\n- [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].\r\n- [X] I updated/added relevant documentation (doc comments with `///`).\r\n- [X] All existing and new tests are passing.\r\n- [x] The analyzer (`flutter analyze --flutter-repo`) does not report any problems on my PR.\r\n- [X] I am willing to follow-up on review comments in a timely manner.\r\n\r\n## Breaking Change\r\n\r\nDoes your PR require Flutter developers to manually update their apps to accommodate your change?\r\n\r\n- [ ] Yes, this is a breaking change (Please read [Handling breaking changes]). *Replace this with a link to the e-mail where you asked for input on this proposed change.*\r\n- [X] No, this is *not* a breaking change.\r\n\r\n<!-- Links -->\r\n[issue database]: https://github.com/flutter/flutter/issues\r\n[Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview\r\n[Test Coverage]: https://github.com/flutter/flutter/wiki/Test-coverage-for-package%3Aflutter\r\n[Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo\r\n[Features we expect every widget to implement]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement\r\n[CLA]: https://cla.developers.google.com/\r\n[Handling breaking changes]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\r\n","created_at":"2019-09-23T10:24:00Z","updated_at":"2019-09-23T14:40:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5a45c7995bd3ba685127713b7cd5be66f0904f0f","assignee":{"login":"perclasson","id":1770678,"node_id":"MDQ6VXNlcjE3NzA2Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1770678?v=4","gravatar_id":"","url":"https://api.github.com/users/perclasson","html_url":"https://github.com/perclasson","followers_url":"https://api.github.com/users/perclasson/followers","following_url":"https://api.github.com/users/perclasson/following{/other_user}","gists_url":"https://api.github.com/users/perclasson/gists{/gist_id}","starred_url":"https://api.github.com/users/perclasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perclasson/subscriptions","organizations_url":"https://api.github.com/users/perclasson/orgs","repos_url":"https://api.github.com/users/perclasson/repos","events_url":"https://api.github.com/users/perclasson/events{/privacy}","received_events_url":"https://api.github.com/users/perclasson/received_events","type":"User","site_admin":false},"assignees":[{"login":"perclasson","id":1770678,"node_id":"MDQ6VXNlcjE3NzA2Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1770678?v=4","gravatar_id":"","url":"https://api.github.com/users/perclasson","html_url":"https://github.com/perclasson","followers_url":"https://api.github.com/users/perclasson/followers","following_url":"https://api.github.com/users/perclasson/following{/other_user}","gists_url":"https://api.github.com/users/perclasson/gists{/gist_id}","starred_url":"https://api.github.com/users/perclasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perclasson/subscriptions","organizations_url":"https://api.github.com/users/perclasson/orgs","repos_url":"https://api.github.com/users/perclasson/repos","events_url":"https://api.github.com/users/perclasson/events{/privacy}","received_events_url":"https://api.github.com/users/perclasson/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"willlarche","id":1271525,"node_id":"MDQ6VXNlcjEyNzE1MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1271525?v=4","gravatar_id":"","url":"https://api.github.com/users/willlarche","html_url":"https://github.com/willlarche","followers_url":"https://api.github.com/users/willlarche/followers","following_url":"https://api.github.com/users/willlarche/following{/other_user}","gists_url":"https://api.github.com/users/willlarche/gists{/gist_id}","starred_url":"https://api.github.com/users/willlarche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willlarche/subscriptions","organizations_url":"https://api.github.com/users/willlarche/orgs","repos_url":"https://api.github.com/users/willlarche/repos","events_url":"https://api.github.com/users/willlarche/events{/privacy}","received_events_url":"https://api.github.com/users/willlarche/received_events","type":"User","site_admin":false},{"login":"rami-a","id":2364772,"node_id":"MDQ6VXNlcjIzNjQ3NzI=","avatar_url":"https://avatars3.githubusercontent.com/u/2364772?v=4","gravatar_id":"","url":"https://api.github.com/users/rami-a","html_url":"https://github.com/rami-a","followers_url":"https://api.github.com/users/rami-a/followers","following_url":"https://api.github.com/users/rami-a/following{/other_user}","gists_url":"https://api.github.com/users/rami-a/gists{/gist_id}","starred_url":"https://api.github.com/users/rami-a/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rami-a/subscriptions","organizations_url":"https://api.github.com/users/rami-a/orgs","repos_url":"https://api.github.com/users/rami-a/repos","events_url":"https://api.github.com/users/rami-a/events{/privacy}","received_events_url":"https://api.github.com/users/rami-a/received_events","type":"User","site_admin":false},{"login":"johnsonmh","id":4229329,"node_id":"MDQ6VXNlcjQyMjkzMjk=","avatar_url":"https://avatars2.githubusercontent.com/u/4229329?v=4","gravatar_id":"","url":"https://api.github.com/users/johnsonmh","html_url":"https://github.com/johnsonmh","followers_url":"https://api.github.com/users/johnsonmh/followers","following_url":"https://api.github.com/users/johnsonmh/following{/other_user}","gists_url":"https://api.github.com/users/johnsonmh/gists{/gist_id}","starred_url":"https://api.github.com/users/johnsonmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnsonmh/subscriptions","organizations_url":"https://api.github.com/users/johnsonmh/orgs","repos_url":"https://api.github.com/users/johnsonmh/repos","events_url":"https://api.github.com/users/johnsonmh/events{/privacy}","received_events_url":"https://api.github.com/users/johnsonmh/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":487496476,"node_id":"MDU6TGFiZWw0ODc0OTY0NzY=","url":"https://api.github.com/repos/flutter/flutter/labels/cla:%20yes","name":"cla: yes","color":"ffffff","default":false},{"id":581964819,"node_id":"MDU6TGFiZWw1ODE5NjQ4MTk=","url":"https://api.github.com/repos/flutter/flutter/labels/d:%20examples","name":"d: examples","color":"0e8a16","default":false},{"id":283479307,"node_id":"MDU6TGFiZWwyODM0NzkzMDc=","url":"https://api.github.com/repos/flutter/flutter/labels/team","name":"team","color":"d4c5f9","default":false},{"id":310360130,"node_id":"MDU6TGFiZWwzMTAzNjAxMzA=","url":"https://api.github.com/repos/flutter/flutter/labels/team:%20gallery","name":"team: gallery","color":"d4c5f9","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/flutter/pulls/41090/commits","review_comments_url":"https://api.github.com/repos/flutter/flutter/pulls/41090/comments","review_comment_url":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/41090/comments","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/626f005bf4739c3e387c524f4449313859847fb1","head":{"label":"perclasson:add_rally_to_examples","ref":"add_rally_to_examples","sha":"626f005bf4739c3e387c524f4449313859847fb1","user":{"login":"perclasson","id":1770678,"node_id":"MDQ6VXNlcjE3NzA2Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1770678?v=4","gravatar_id":"","url":"https://api.github.com/users/perclasson","html_url":"https://github.com/perclasson","followers_url":"https://api.github.com/users/perclasson/followers","following_url":"https://api.github.com/users/perclasson/following{/other_user}","gists_url":"https://api.github.com/users/perclasson/gists{/gist_id}","starred_url":"https://api.github.com/users/perclasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perclasson/subscriptions","organizations_url":"https://api.github.com/users/perclasson/orgs","repos_url":"https://api.github.com/users/perclasson/repos","events_url":"https://api.github.com/users/perclasson/events{/privacy}","received_events_url":"https://api.github.com/users/perclasson/received_events","type":"User","site_admin":false},"repo":{"id":207293650,"node_id":"MDEwOlJlcG9zaXRvcnkyMDcyOTM2NTA=","name":"flutter","full_name":"perclasson/flutter","private":false,"owner":{"login":"perclasson","id":1770678,"node_id":"MDQ6VXNlcjE3NzA2Nzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1770678?v=4","gravatar_id":"","url":"https://api.github.com/users/perclasson","html_url":"https://github.com/perclasson","followers_url":"https://api.github.com/users/perclasson/followers","following_url":"https://api.github.com/users/perclasson/following{/other_user}","gists_url":"https://api.github.com/users/perclasson/gists{/gist_id}","starred_url":"https://api.github.com/users/perclasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perclasson/subscriptions","organizations_url":"https://api.github.com/users/perclasson/orgs","repos_url":"https://api.github.com/users/perclasson/repos","events_url":"https://api.github.com/users/perclasson/events{/privacy}","received_events_url":"https://api.github.com/users/perclasson/received_events","type":"User","site_admin":false},"html_url":"https://github.com/perclasson/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":true,"url":"https://api.github.com/repos/perclasson/flutter","forks_url":"https://api.github.com/repos/perclasson/flutter/forks","keys_url":"https://api.github.com/repos/perclasson/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/perclasson/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/perclasson/flutter/teams","hooks_url":"https://api.github.com/repos/perclasson/flutter/hooks","issue_events_url":"https://api.github.com/repos/perclasson/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/perclasson/flutter/events","assignees_url":"https://api.github.com/repos/perclasson/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/perclasson/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/perclasson/flutter/tags","blobs_url":"https://api.github.com/repos/perclasson/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/perclasson/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/perclasson/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/perclasson/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/perclasson/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/perclasson/flutter/languages","stargazers_url":"https://api.github.com/repos/perclasson/flutter/stargazers","contributors_url":"https://api.github.com/repos/perclasson/flutter/contributors","subscribers_url":"https://api.github.com/repos/perclasson/flutter/subscribers","subscription_url":"https://api.github.com/repos/perclasson/flutter/subscription","commits_url":"https://api.github.com/repos/perclasson/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/perclasson/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/perclasson/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/perclasson/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/perclasson/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/perclasson/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/perclasson/flutter/merges","archive_url":"https://api.github.com/repos/perclasson/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/perclasson/flutter/downloads","issues_url":"https://api.github.com/repos/perclasson/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/perclasson/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/perclasson/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/perclasson/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/perclasson/flutter/labels{/name}","releases_url":"https://api.github.com/repos/perclasson/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/perclasson/flutter/deployments","created_at":"2019-09-09T11:30:08Z","updated_at":"2019-09-12T08:36:40Z","pushed_at":"2019-09-23T10:18:58Z","git_url":"git://github.com/perclasson/flutter.git","ssh_url":"git@github.com:perclasson/flutter.git","clone_url":"https://github.com/perclasson/flutter.git","svn_url":"https://github.com/perclasson/flutter","homepage":"https://flutter.dev","size":73315,"stargazers_count":0,"watchers_count":0,"language":"Dart","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"919cc97f6a3067faf84a0946132319933d0743a5","user":{"login":"flutter","id":14101776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTAxNzc2","avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"repo":{"id":31792824,"node_id":"MDEwOlJlcG9zaXRvcnkzMTc5MjgyNA==","name":"flutter","full_name":"flutter/flutter","private":false,"owner":{"login":"flutter","id":14101776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTAxNzc2","avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/flutter/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":false,"url":"https://api.github.com/repos/flutter/flutter","forks_url":"https://api.github.com/repos/flutter/flutter/forks","keys_url":"https://api.github.com/repos/flutter/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flutter/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flutter/flutter/teams","hooks_url":"https://api.github.com/repos/flutter/flutter/hooks","issue_events_url":"https://api.github.com/repos/flutter/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/flutter/flutter/events","assignees_url":"https://api.github.com/repos/flutter/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/flutter/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/flutter/flutter/tags","blobs_url":"https://api.github.com/repos/flutter/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flutter/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flutter/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/flutter/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/flutter/flutter/languages","stargazers_url":"https://api.github.com/repos/flutter/flutter/stargazers","contributors_url":"https://api.github.com/repos/flutter/flutter/contributors","subscribers_url":"https://api.github.com/repos/flutter/flutter/subscribers","subscription_url":"https://api.github.com/repos/flutter/flutter/subscription","commits_url":"https://api.github.com/repos/flutter/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/flutter/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/flutter/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/flutter/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/flutter/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/flutter/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flutter/flutter/merges","archive_url":"https://api.github.com/repos/flutter/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flutter/flutter/downloads","issues_url":"https://api.github.com/repos/flutter/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/flutter/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/flutter/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/flutter/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flutter/flutter/labels{/name}","releases_url":"https://api.github.com/repos/flutter/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/flutter/flutter/deployments","created_at":"2015-03-06T22:54:58Z","updated_at":"2019-09-23T14:36:07Z","pushed_at":"2019-09-23T13:11:04Z","git_url":"git://github.com/flutter/flutter.git","ssh_url":"git@github.com:flutter/flutter.git","clone_url":"https://github.com/flutter/flutter.git","svn_url":"https://github.com/flutter/flutter","homepage":"https://flutter.dev","size":73367,"stargazers_count":75655,"watchers_count":75655,"language":"Dart","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9343,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":8027,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":9343,"open_issues":8027,"watchers":75655,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/41090"},"html":{"href":"https://github.com/flutter/flutter/pull/41090"},"issue":{"href":"https://api.github.com/repos/flutter/flutter/issues/41090"},"comments":{"href":"https://api.github.com/repos/flutter/flutter/issues/41090/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/flutter/pulls/41090/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/flutter/pulls/41090/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/flutter/statuses/626f005bf4739c3e387c524f4449313859847fb1"}},"author_association":"MEMBER"}}
other: {"actor":{"display_login":"clocksmith"}}