{"action":"created","comment":{"url":"https://api.github.com/repos/flutter/flutter/pulls/comments/172648750","pull_request_review_id":101702814,"id":172648750,"diff_hunk":"@@ -186,138 +189,209 @@ void main() {\n     log.clear();\n   });\n \n-  testWidgets('Slider has a customizable active color',\n+  testWidgets('Slider uses the right theme colors for the right components',\n       (WidgetTester tester) async {\n-    const Color customColor = const Color(0xFF4CD964);\n-    final ThemeData theme = new ThemeData(platform: TargetPlatform.android);\n-    Widget buildApp(Color activeColor) {\n+    const Color customColor1 = const Color(0xcafefeed);\n+    const Color customColor2 = const Color(0xdeadbeef);\n+    final ThemeData theme = new ThemeData(\n+      platform: TargetPlatform.android,\n+      primarySwatch: Colors.blue,\n+    );\n+    final SliderThemeData sliderTheme = theme.sliderTheme;\n+    double value = 0.45;\n+    Widget buildApp({\n+      Color activeColor,\n+      Color inactiveColor,\n+      int divisions,\n+      bool enabled: true,\n+    }) {\n+      final ValueChanged<double> onChanged = !enabled\n+          ? null\n+          : (double d) {\n+              value = d;\n+            };\n       return new Directionality(\n         textDirection: TextDirection.ltr,\n         child: new Material(\n           child: new Center(\n             child: new Theme(\n               data: theme,\n               child: new Slider(\n-                value: 0.5,\n+                value: value,\n+                label: '$value',\n+                divisions: divisions,\n                 activeColor: activeColor,\n-                onChanged: (double newValue) {},\n-              ),\n-            ),\n-          ),\n-        ),\n-      );\n-    }\n-\n-    await tester.pumpWidget(buildApp(null));\n-\n-    final RenderBox sliderBox =\n-        tester.firstRenderObject<RenderBox>(find.byType(Slider));\n-\n-    expect(sliderBox, paints..rect(color: theme.accentColor)..rect(color: theme.unselectedWidgetColor));\n-    expect(sliderBox, paints..circle(color: theme.accentColor));\n-    expect(sliderBox, isNot(paints..circle(color: customColor)));\n-    expect(sliderBox, isNot(paints..circle(color: theme.unselectedWidgetColor)));\n-    await tester.pumpWidget(buildApp(customColor));\n-    expect(sliderBox, paints..rect(color: customColor)..rect(color: theme.unselectedWidgetColor));\n-    expect(sliderBox, paints..circle(color: customColor));\n-    expect(sliderBox, isNot(paints..circle(color: theme.accentColor)));\n-    expect(sliderBox, isNot(paints..circle(color: theme.unselectedWidgetColor)));\n-  });\n-\n-  testWidgets('Slider has a customizable inactive color',\n-      (WidgetTester tester) async {\n-    const Color customColor = const Color(0xFF4CD964);\n-    final ThemeData theme = new ThemeData(platform: TargetPlatform.android);\n-    Widget buildApp(Color inactiveColor) {\n-      return new Directionality(\n-      textDirection: TextDirection.ltr,\n-        child: new Material(\n-          child: new Center(\n-            child: new Theme(\n-              data: theme,\n-              child: new Slider(\n-                value: 0.5,\n                 inactiveColor: inactiveColor,\n-                onChanged: (double newValue) {},\n+                onChanged: onChanged,\n               ),\n             ),\n           ),\n         ),\n       );\n     }\n \n-    await tester.pumpWidget(buildApp(null));\n-\n-    final RenderBox sliderBox =\n-        tester.firstRenderObject<RenderBox>(find.byType(Slider));\n-\n-    expect(sliderBox, paints..rect(color: theme.accentColor)..rect(color: theme.unselectedWidgetColor));\n-    expect(sliderBox, paints..circle(color: theme.accentColor));\n-    await tester.pumpWidget(buildApp(customColor));\n-    expect(sliderBox, paints..rect(color: theme.accentColor)..rect(color: customColor));\n-    expect(sliderBox, paints..circle(color: theme.accentColor));\n-  });\n-\n-  testWidgets('Slider can draw an open thumb at min (LTR)',\n-      (WidgetTester tester) async {\n-    Widget buildApp(bool thumbOpenAtMin) {\n-      return new Directionality(\n-        textDirection: TextDirection.ltr,\n-        child: new Material(\n-          child: new Center(\n-            child: new Slider(\n-              value: 0.0,\n-              thumbOpenAtMin: thumbOpenAtMin,\n-              onChanged: (double newValue) {},\n-            ),\n-          ),\n-        ),\n-      );\n-    }\n-\n-    await tester.pumpWidget(buildApp(false));\n-\n-    final RenderBox sliderBox =\n-        tester.firstRenderObject<RenderBox>(find.byType(Slider));\n-\n-    expect(sliderBox, paints..circle(style: PaintingStyle.fill));\n-    expect(sliderBox, isNot(paints..circle()..circle()));\n-    await tester.pumpWidget(buildApp(true));\n-    expect(sliderBox, paints..circle(style: PaintingStyle.stroke));\n-    expect(sliderBox, isNot(paints..circle()..circle()));\n-  });\n-\n-  testWidgets('Slider can draw an open thumb at min (RTL)',\n-      (WidgetTester tester) async {\n-    Widget buildApp(bool thumbOpenAtMin) {\n-      return new Directionality(\n-        textDirection: TextDirection.rtl,\n-        child: new Material(\n-          child: new Center(\n-            child: new Slider(\n-              value: 0.0,\n-              thumbOpenAtMin: thumbOpenAtMin,\n-              onChanged: (double newValue) {},\n-            ),\n-          ),\n-        ),\n-      );\n-    }\n-\n-    await tester.pumpWidget(buildApp(false));\n+    await tester.pumpWidget(buildApp());\n \n-    final RenderBox sliderBox =\n-        tester.firstRenderObject<RenderBox>(find.byType(Slider));\n+    final RenderBox sliderBox = tester.firstRenderObject<RenderBox>(find.byType(Slider));\n \n-    expect(sliderBox, paints..circle(style: PaintingStyle.fill));\n-    expect(sliderBox, isNot(paints..circle()..circle()));\n-    await tester.pumpWidget(buildApp(true));\n-    expect(sliderBox, paints..circle(style: PaintingStyle.stroke));\n-    expect(sliderBox, isNot(paints..circle()..circle()));\n+    // Check default theme for enabled widget.\n+    expect(\n+        sliderBox,\n+        paints\n+          ..rect(color: sliderTheme.activeRailColor)\n+          ..rect(color: sliderTheme.inactiveRailColor));\n+    expect(sliderBox, paints..circle(color: sliderTheme.thumbColor));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.activeTickMarkColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.inactiveTickMarkColor)));\n+\n+    // Test setting only the activeColor.\n+    await tester.pumpWidget(buildApp(activeColor: customColor1));\n+    expect(\n+        sliderBox, paints..rect(color: customColor1)..rect(color: sliderTheme.inactiveRailColor));\n+    expect(sliderBox, paints..circle(color: customColor1));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.thumbColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+\n+    // Test setting only the inactiveColor.\n+    await tester.pumpWidget(buildApp(inactiveColor: customColor1));\n+    expect(sliderBox, paints..rect(color: sliderTheme.activeRailColor)..rect(color: customColor1));\n+    expect(sliderBox, paints..circle(color: sliderTheme.thumbColor));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+\n+    // Test setting both activeColor and inactiveColor.\n+    await tester.pumpWidget(buildApp(activeColor: customColor1, inactiveColor: customColor2));\n+    expect(sliderBox, paints..rect(color: customColor1)..rect(color: customColor2));\n+    expect(sliderBox, paints..circle(color: customColor1));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.thumbColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+\n+    // Test colors for discrete slider.\n+    await tester.pumpWidget(buildApp(divisions: 3));\n+    expect(\n+        sliderBox,\n+        paints\n+          ..rect(color: sliderTheme.activeRailColor)\n+          ..rect(color: sliderTheme.inactiveRailColor));\n+    expect(\n+        sliderBox,\n+        paints\n+          ..circle(color: sliderTheme.activeTickMarkColor)\n+          ..circle(color: sliderTheme.activeTickMarkColor)\n+          ..circle(color: sliderTheme.inactiveTickMarkColor)\n+          ..circle(color: sliderTheme.inactiveTickMarkColor)\n+          ..circle(color: sliderTheme.thumbColor));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+\n+    // Test colors for discrete slider with inactiveColor and activeColor set.\n+    await tester\n+        .pumpWidget(buildApp(activeColor: customColor1, inactiveColor: customColor2, divisions: 3));\n+    expect(sliderBox, paints..rect(color: customColor1)..rect(color: customColor2));\n+    expect(\n+        sliderBox,\n+        paints\n+          ..circle(color: customColor2)\n+          ..circle(color: customColor2)\n+          ..circle(color: customColor1)\n+          ..circle(color: customColor1)\n+          ..circle(color: customColor1));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.thumbColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.disabledThumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledActiveRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.disabledInactiveRailColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.activeTickMarkColor)));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.inactiveTickMarkColor)));\n+\n+    // Test default theme for disabled widget.\n+    await tester.pumpWidget(buildApp(enabled: false));\n+    await tester.pump(const Duration(seconds: 1)); // wait for disable animation to finish.\n+    expect(\n+        sliderBox,\n+        paints\n+          ..rect(color: sliderTheme.disabledActiveRailColor)\n+          ..rect(color: sliderTheme.disabledInactiveRailColor));\n+    expect(sliderBox, paints..circle(color: sliderTheme.disabledThumbColor));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.thumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.activeRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.inactiveRailColor)));\n+\n+    // Test setting the activeColor and inactiveColor for disabled widget.\n+    await tester.pumpWidget(\n+        buildApp(activeColor: customColor1, inactiveColor: customColor2, enabled: false));\n+    expect(\n+        sliderBox,\n+        paints\n+          ..rect(color: sliderTheme.disabledActiveRailColor)\n+          ..rect(color: sliderTheme.disabledInactiveRailColor));\n+    expect(sliderBox, paints..circle(color: sliderTheme.disabledThumbColor));\n+    expect(sliderBox, isNot(paints..circle(color: sliderTheme.thumbColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.activeRailColor)));\n+    expect(sliderBox, isNot(paints..rect(color: sliderTheme.inactiveRailColor)));\n+\n+    // Test that the default value indicator has the right colors.\n+    await tester.pumpWidget(buildApp(divisions: 3));\n+    Offset center = tester.getCenter(find.byType(Slider));\n+    TestGesture gesture = await tester.startGesture(center);\n+    await tester.pump();\n+    await tester\n+        .pump(const Duration(milliseconds: 500)); // wait for value indicator animation to finish.\n+    expect(value, equals(2.0 / 3.0));\n+    expect(\n+      sliderBox,\n+      paints\n+        ..rect(color: sliderTheme.activeRailColor)\n+        ..rect(color: sliderTheme.inactiveRailColor)\n+        ..circle(color: sliderTheme.overlayColor)\n+        ..circle(color: sliderTheme.activeTickMarkColor)\n+        ..circle(color: sliderTheme.activeTickMarkColor)\n+        ..circle(color: sliderTheme.inactiveTickMarkColor)\n+        ..circle(color: sliderTheme.inactiveTickMarkColor)\n+        ..path(color: sliderTheme.valueIndicatorColor)\n+        ..circle(color: sliderTheme.thumbColor),\n+    );\n+    await gesture.up();\n+    await tester.pump();\n+    await tester\n+        .pump(const Duration(milliseconds: 500)); // wait for value indicator animation to finish.\n+\n+    // Testing the custom colors are used for the indicator.\n+    await tester.pumpWidget(buildApp(\n+      divisions: 3,\n+      activeColor: customColor1,\n+      inactiveColor: customColor2,\n+    ));\n+    center = tester.getCenter(find.byType(Slider));\n+    gesture = await tester.startGesture(center);\n+    await tester.pump();\n+    await tester\n+        .pump(const Duration(milliseconds: 500)); // wait for value indicator animation to finish.","path":"packages/flutter/test/material/slider_test.dart","position":330,"original_position":330,"commit_id":"d1cb3bc91888746c4c9144f3d9016d40240b20f2","original_commit_id":"d1cb3bc91888746c4c9144f3d9016d40240b20f2","user":{"login":"Hixie","id":551196,"avatar_url":"https://avatars2.githubusercontent.com/u/551196?v=4","gravatar_id":"","url":"https://api.github.com/users/Hixie","html_url":"https://github.com/Hixie","followers_url":"https://api.github.com/users/Hixie/followers","following_url":"https://api.github.com/users/Hixie/following{/other_user}","gists_url":"https://api.github.com/users/Hixie/gists{/gist_id}","starred_url":"https://api.github.com/users/Hixie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hixie/subscriptions","organizations_url":"https://api.github.com/users/Hixie/orgs","repos_url":"https://api.github.com/users/Hixie/repos","events_url":"https://api.github.com/users/Hixie/events{/privacy}","received_events_url":"https://api.github.com/users/Hixie/received_events","type":"User","site_admin":false},"body":"several times in this test the comment caused dartfmt to wrap a \"pump\" call inconsistently with the rest of the code","created_at":"2018-03-06T20:26:31Z","updated_at":"2018-03-06T20:26:31Z","html_url":"https://github.com/flutter/flutter/pull/14901#discussion_r172648750","pull_request_url":"https://api.github.com/repos/flutter/flutter/pulls/14901","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments/172648750"},"html":{"href":"https://github.com/flutter/flutter/pull/14901#discussion_r172648750"},"pull_request":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14901"}}},"pull_request":{"url":"https://api.github.com/repos/flutter/flutter/pulls/14901","id":171531351,"html_url":"https://github.com/flutter/flutter/pull/14901","diff_url":"https://github.com/flutter/flutter/pull/14901.diff","patch_url":"https://github.com/flutter/flutter/pull/14901.patch","issue_url":"https://api.github.com/repos/flutter/flutter/issues/14901","number":14901,"state":"closed","locked":false,"title":"Slider Visual Update","user":{"login":"gspencergoog","id":8867023,"avatar_url":"https://avatars2.githubusercontent.com/u/8867023?v=4","gravatar_id":"","url":"https://api.github.com/users/gspencergoog","html_url":"https://github.com/gspencergoog","followers_url":"https://api.github.com/users/gspencergoog/followers","following_url":"https://api.github.com/users/gspencergoog/following{/other_user}","gists_url":"https://api.github.com/users/gspencergoog/gists{/gist_id}","starred_url":"https://api.github.com/users/gspencergoog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gspencergoog/subscriptions","organizations_url":"https://api.github.com/users/gspencergoog/orgs","repos_url":"https://api.github.com/users/gspencergoog/repos","events_url":"https://api.github.com/users/gspencergoog/events{/privacy}","received_events_url":"https://api.github.com/users/gspencergoog/received_events","type":"User","site_admin":false},"body":"This implements an update to the look of the Slider widget.\r\n\r\nSpecifically, it does the following:\r\n * Adds the ability to customize the colors of all components of the slider\r\n * Adds the ability to customize the shape of the slider thumb and value indicator\r\n * Adds the ability to show the value indicator on continuous sliders\r\n * Updates the default value indicator to be a \"paddle\" shape with new animations.\r\n * Changes the tick marks to be visible all the time on discrete sliders\r\n * Fixes a memory leak of an animation controller.\r\n * Removes \"thumbOpenAtMin\" flag, which is no longer needed, and can be emulated by the\r\n   custom thumb shape support.  It was not widely used.\r\n\r\nAdds tests for all of the new features.\r\n","created_at":"2018-02-27T00:30:12Z","updated_at":"2018-03-06T20:26:31Z","closed_at":"2018-03-01T21:03:21Z","merged_at":"2018-03-01T21:03:21Z","merge_commit_sha":"701eff4ac5188423343db52eccfafd93afc21230","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":487496476,"url":"https://api.github.com/repos/flutter/flutter/labels/cla:%20yes","name":"cla: yes","color":"ffffff","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/flutter/pulls/14901/commits","review_comments_url":"https://api.github.com/repos/flutter/flutter/pulls/14901/comments","review_comment_url":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/14901/comments","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/d1cb3bc91888746c4c9144f3d9016d40240b20f2","head":{"label":"gspencergoog:m2_slider","ref":"m2_slider","sha":"d1cb3bc91888746c4c9144f3d9016d40240b20f2","user":{"login":"gspencergoog","id":8867023,"avatar_url":"https://avatars2.githubusercontent.com/u/8867023?v=4","gravatar_id":"","url":"https://api.github.com/users/gspencergoog","html_url":"https://github.com/gspencergoog","followers_url":"https://api.github.com/users/gspencergoog/followers","following_url":"https://api.github.com/users/gspencergoog/following{/other_user}","gists_url":"https://api.github.com/users/gspencergoog/gists{/gist_id}","starred_url":"https://api.github.com/users/gspencergoog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gspencergoog/subscriptions","organizations_url":"https://api.github.com/users/gspencergoog/orgs","repos_url":"https://api.github.com/users/gspencergoog/repos","events_url":"https://api.github.com/users/gspencergoog/events{/privacy}","received_events_url":"https://api.github.com/users/gspencergoog/received_events","type":"User","site_admin":false},"repo":{"id":92983227,"name":"flutter","full_name":"gspencergoog/flutter","owner":{"login":"gspencergoog","id":8867023,"avatar_url":"https://avatars2.githubusercontent.com/u/8867023?v=4","gravatar_id":"","url":"https://api.github.com/users/gspencergoog","html_url":"https://github.com/gspencergoog","followers_url":"https://api.github.com/users/gspencergoog/followers","following_url":"https://api.github.com/users/gspencergoog/following{/other_user}","gists_url":"https://api.github.com/users/gspencergoog/gists{/gist_id}","starred_url":"https://api.github.com/users/gspencergoog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gspencergoog/subscriptions","organizations_url":"https://api.github.com/users/gspencergoog/orgs","repos_url":"https://api.github.com/users/gspencergoog/repos","events_url":"https://api.github.com/users/gspencergoog/events{/privacy}","received_events_url":"https://api.github.com/users/gspencergoog/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gspencergoog/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":true,"url":"https://api.github.com/repos/gspencergoog/flutter","forks_url":"https://api.github.com/repos/gspencergoog/flutter/forks","keys_url":"https://api.github.com/repos/gspencergoog/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gspencergoog/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gspencergoog/flutter/teams","hooks_url":"https://api.github.com/repos/gspencergoog/flutter/hooks","issue_events_url":"https://api.github.com/repos/gspencergoog/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/gspencergoog/flutter/events","assignees_url":"https://api.github.com/repos/gspencergoog/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/gspencergoog/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/gspencergoog/flutter/tags","blobs_url":"https://api.github.com/repos/gspencergoog/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gspencergoog/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gspencergoog/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/gspencergoog/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gspencergoog/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/gspencergoog/flutter/languages","stargazers_url":"https://api.github.com/repos/gspencergoog/flutter/stargazers","contributors_url":"https://api.github.com/repos/gspencergoog/flutter/contributors","subscribers_url":"https://api.github.com/repos/gspencergoog/flutter/subscribers","subscription_url":"https://api.github.com/repos/gspencergoog/flutter/subscription","commits_url":"https://api.github.com/repos/gspencergoog/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/gspencergoog/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/gspencergoog/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/gspencergoog/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/gspencergoog/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/gspencergoog/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gspencergoog/flutter/merges","archive_url":"https://api.github.com/repos/gspencergoog/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gspencergoog/flutter/downloads","issues_url":"https://api.github.com/repos/gspencergoog/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/gspencergoog/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/gspencergoog/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/gspencergoog/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gspencergoog/flutter/labels{/name}","releases_url":"https://api.github.com/repos/gspencergoog/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/gspencergoog/flutter/deployments","created_at":"2017-05-31T19:52:38Z","updated_at":"2017-05-31T19:52:44Z","pushed_at":"2018-03-06T19:10:52Z","git_url":"git://github.com/gspencergoog/flutter.git","ssh_url":"git@github.com:gspencergoog/flutter.git","clone_url":"https://github.com/gspencergoog/flutter.git","svn_url":"https://github.com/gspencergoog/flutter","homepage":"https://flutter.io","size":35302,"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,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"621a963e8b495c5f39e0df3e6d918184c8ade917","user":{"login":"flutter","id":14101776,"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,"name":"flutter","full_name":"flutter/flutter","owner":{"login":"flutter","id":14101776,"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},"private":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":"2018-03-06T20:21:58Z","pushed_at":"2018-03-06T19:55:40Z","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.io","size":35308,"stargazers_count":16561,"watchers_count":16561,"language":"Dart","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1332,"mirror_url":null,"archived":false,"open_issues_count":2426,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":1332,"open_issues":2426,"watchers":16561,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14901"},"html":{"href":"https://github.com/flutter/flutter/pull/14901"},"issue":{"href":"https://api.github.com/repos/flutter/flutter/issues/14901"},"comments":{"href":"https://api.github.com/repos/flutter/flutter/issues/14901/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14901/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14901/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/flutter/statuses/d1cb3bc91888746c4c9144f3d9016d40240b20f2"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Hixie"}}