Add toggle to allow showing/hiding internal properties (#3006)

diff --git a/case_study/code_size/optimized/code_size_images/test/widget_test.dart b/case_study/code_size/optimized/code_size_images/test/widget_test.dart
index d7452ee..ba11e18 100644
--- a/case_study/code_size/optimized/code_size_images/test/widget_test.dart
+++ b/case_study/code_size/optimized/code_size_images/test/widget_test.dart
@@ -5,11 +5,10 @@
 // gestures. You can also use WidgetTester to find child widgets in the widget
 // tree, read text, and verify that the values of widget properties are correct.
 
+import 'package:code_size_images/main.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:code_size_images/main.dart';
-
 void main() {
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
diff --git a/case_study/code_size/optimized/code_size_package/test/widget_test.dart b/case_study/code_size/optimized/code_size_package/test/widget_test.dart
index f99312d..5ddbd62 100644
--- a/case_study/code_size/optimized/code_size_package/test/widget_test.dart
+++ b/case_study/code_size/optimized/code_size_package/test/widget_test.dart
@@ -5,11 +5,10 @@
 // gestures. You can also use WidgetTester to find child widgets in the widget
 // tree, read text, and verify that the values of widget properties are correct.
 
+import 'package:code_size_package/main.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:code_size_package/main.dart';
-
 void main() {
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
diff --git a/case_study/code_size/unoptimized/code_size_images/test/widget_test.dart b/case_study/code_size/unoptimized/code_size_images/test/widget_test.dart
index d7452ee..ba11e18 100644
--- a/case_study/code_size/unoptimized/code_size_images/test/widget_test.dart
+++ b/case_study/code_size/unoptimized/code_size_images/test/widget_test.dart
@@ -5,11 +5,10 @@
 // gestures. You can also use WidgetTester to find child widgets in the widget
 // tree, read text, and verify that the values of widget properties are correct.
 
+import 'package:code_size_images/main.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:code_size_images/main.dart';
-
 void main() {
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
diff --git a/case_study/code_size/unoptimized/code_size_package/test/widget_test.dart b/case_study/code_size/unoptimized/code_size_package/test/widget_test.dart
index f99312d..5ddbd62 100644
--- a/case_study/code_size/unoptimized/code_size_package/test/widget_test.dart
+++ b/case_study/code_size/unoptimized/code_size_package/test/widget_test.dart
@@ -5,11 +5,10 @@
 // gestures. You can also use WidgetTester to find child widgets in the widget
 // tree, read text, and verify that the values of widget properties are correct.
 
+import 'package:code_size_package/main.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:code_size_package/main.dart';
-
 void main() {
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
diff --git a/case_study/platform_channel/lib/channel_demo.dart b/case_study/platform_channel/lib/channel_demo.dart
index 1865340..eb96566 100644
--- a/case_study/platform_channel/lib/channel_demo.dart
+++ b/case_study/platform_channel/lib/channel_demo.dart
@@ -1,5 +1,5 @@
-import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
 
 class ChannelDemo extends StatefulWidget {
diff --git a/packages/devtools_app/lib/src/provider/instance_viewer/instance_providers.dart b/packages/devtools_app/lib/src/provider/instance_viewer/instance_providers.dart
index 6848e1a..601a466 100644
--- a/packages/devtools_app/lib/src/provider/instance_viewer/instance_providers.dart
+++ b/packages/devtools_app/lib/src/provider/instance_viewer/instance_providers.dart
@@ -424,7 +424,7 @@
       ownerName: owner.name,
       ownerUri: owner.library.uri,
       eval: await ref.watch(libraryEvalProvider(owner.library.uri).future),
-      isDefinedByDependency: ownerPackageName == appName,
+      isDefinedByDependency: ownerPackageName != appName,
     );
   }).toList();
 
diff --git a/packages/devtools_app/lib/src/provider/instance_viewer/instance_viewer.dart b/packages/devtools_app/lib/src/provider/instance_viewer/instance_viewer.dart
index 9689bf6..0aa26f1 100644
--- a/packages/devtools_app/lib/src/provider/instance_viewer/instance_viewer.dart
+++ b/packages/devtools_app/lib/src/provider/instance_viewer/instance_viewer.dart
@@ -96,9 +96,11 @@
   const InstanceViewer({
     Key key,
     this.rootPath,
+    @required this.showInternalProperties,
   }) : super(key: key);
 
   final InstancePath rootPath;
+  final bool showInternalProperties;
 
   @override
   _InstanceViewerState createState() => _InstanceViewerState();
@@ -351,6 +353,13 @@
     @required InstancePath path,
   }) sync* {
     for (final field in instance.fields) {
+      if (!widget.showInternalProperties &&
+          field.isDefinedByDependency &&
+          field.isPrivate) {
+        // Hide private properties from classes defined by dependencies
+        continue;
+      }
+
       final children = _buildListViewItems(
         context,
         watch,
diff --git a/packages/devtools_app/lib/src/provider/provider_screen.dart b/packages/devtools_app/lib/src/provider/provider_screen.dart
index 0912d86..4ffe639 100644
--- a/packages/devtools_app/lib/src/provider/provider_screen.dart
+++ b/packages/devtools_app/lib/src/provider/provider_screen.dart
@@ -8,6 +8,7 @@
 
 import '../banner_messages.dart';
 import '../common_widgets.dart';
+import '../dialogs.dart';
 import '../screen.dart';
 import '../split.dart';
 import './instance_viewer/instance_details.dart';
@@ -39,6 +40,8 @@
       );
 });
 
+final _showInternals = StateProvider<bool>((ref) => false);
+
 class ProviderScreen extends Screen {
   const ProviderScreen()
       : super.conditional(
@@ -82,8 +85,8 @@
             child: Column(
               children: const [
                 AreaPaneHeader(
-                  title: Text('Providers'),
                   needsTopBorder: false,
+                  title: Text('Providers'),
                 ),
                 Expanded(
                   child: ProviderList(),
@@ -95,13 +98,25 @@
             child: Column(
               children: [
                 AreaPaneHeader(
-                  title: Text(detailsTitleText),
                   needsTopBorder: false,
+                  title: Text(detailsTitleText),
+                  actions: [
+                    SettingsOutlinedButton(
+                      onPressed: () {
+                        showDialog(
+                          context: context,
+                          builder: (_) => _StateInspectorSettingsDialog(),
+                        );
+                      },
+                      tooltip: _StateInspectorSettingsDialog.title,
+                    ),
+                  ],
                 ),
                 if (selectedProviderId != null)
                   Expanded(
                     child: InstanceViewer(
                       rootPath: InstancePath.fromProviderId(selectedProviderId),
+                      showInternalProperties: watch(_showInternals).state,
                     ),
                   )
               ],
@@ -122,3 +137,44 @@
         .build(context),
   );
 }
+
+class _StateInspectorSettingsDialog extends ConsumerWidget {
+  static const title = 'State inspector configurations';
+
+  @override
+  Widget build(BuildContext context, ScopedReader watch) {
+    final theme = Theme.of(context);
+
+    return DevToolsDialog(
+      title: dialogTitleText(theme, title),
+      content: Column(
+        mainAxisSize: MainAxisSize.min,
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          InkWell(
+            onTap: () => _toggleShowInternals(context),
+            child: Row(
+              children: [
+                Checkbox(
+                  value: watch(_showInternals).state,
+                  onChanged: (_) => _toggleShowInternals(context),
+                ),
+                const Text(
+                  'Show private properties inherited from SDKs/packages',
+                ),
+              ],
+            ),
+          )
+        ],
+      ),
+      actions: [
+        DialogCloseButton(),
+      ],
+    );
+  }
+
+  void _toggleShowInternals(BuildContext context) {
+    final showInternals = context.read(_showInternals);
+    showInternals.state = !showInternals.state;
+  }
+}
diff --git a/packages/devtools_app/test/goldens/provider_screen/list_error_banner.png b/packages/devtools_app/test/goldens/provider_screen/list_error_banner.png
index 8e4e8fe..f48178e 100644
--- a/packages/devtools_app/test/goldens/provider_screen/list_error_banner.png
+++ b/packages/devtools_app/test/goldens/provider_screen/list_error_banner.png
Binary files differ
diff --git a/packages/devtools_app/test/goldens/provider_screen/no_selected_provider.png b/packages/devtools_app/test/goldens/provider_screen/no_selected_provider.png
index 6fe8dfd..ce95207 100644
--- a/packages/devtools_app/test/goldens/provider_screen/no_selected_provider.png
+++ b/packages/devtools_app/test/goldens/provider_screen/no_selected_provider.png
Binary files differ
diff --git a/packages/devtools_app/test/goldens/provider_screen/selected_provider.png b/packages/devtools_app/test/goldens/provider_screen/selected_provider.png
index 31adc92..a51f89a 100644
--- a/packages/devtools_app/test/goldens/provider_screen/selected_provider.png
+++ b/packages/devtools_app/test/goldens/provider_screen/selected_provider.png
Binary files differ
diff --git a/packages/devtools_app/test/goldens/provider_screen/selected_provider_error_banner.png b/packages/devtools_app/test/goldens/provider_screen/selected_provider_error_banner.png
index 4cb9536..09fc6ab 100644
--- a/packages/devtools_app/test/goldens/provider_screen/selected_provider_error_banner.png
+++ b/packages/devtools_app/test/goldens/provider_screen/selected_provider_error_banner.png
Binary files differ
diff --git a/packages/devtools_app/test/instance_viewer/instance_viewer_test.dart b/packages/devtools_app/test/instance_viewer/instance_viewer_test.dart
index e5b2f15..aae62d7 100644
--- a/packages/devtools_app/test/instance_viewer/instance_viewer_test.dart
+++ b/packages/devtools_app/test/instance_viewer/instance_viewer_test.dart
@@ -117,6 +117,99 @@
   setUpAll(() => loadFonts());
 
   group('InstanceViewer', () {
+    testWidgets(
+        'showInternalProperties: false hides private properties from dependencies',
+        (tester) async {
+      const objPath = InstancePath.fromInstanceId('obj');
+
+      InstancePath pathForProperty(String name) {
+        return objPath.pathForChild(
+          PathToProperty.objectProperty(
+            name: name,
+            ownerUri: '',
+            ownerName: '',
+          ),
+        );
+      }
+
+      await tester.pumpWidget(
+        ProviderScope(
+          overrides: [
+            rawInstanceProvider(objPath).overrideWithValue(
+              AsyncValue.data(
+                ObjectInstance(
+                  [
+                    ObjectField(
+                      name: 'first',
+                      isFinal: false,
+                      ownerName: '',
+                      ownerUri: '',
+                      eval: FakeEvalOnDartLibrary(),
+                      ref: Result.error(Error()),
+                      isDefinedByDependency: true,
+                    ),
+                    ObjectField(
+                      name: '_second',
+                      isFinal: false,
+                      ownerName: '',
+                      ownerUri: '',
+                      eval: FakeEvalOnDartLibrary(),
+                      ref: Result.error(Error()),
+                      isDefinedByDependency: true,
+                    ),
+                    ObjectField(
+                      name: 'third',
+                      isFinal: false,
+                      ownerName: '',
+                      ownerUri: '',
+                      eval: FakeEvalOnDartLibrary(),
+                      ref: Result.error(Error()),
+                      isDefinedByDependency: false,
+                    ),
+                    ObjectField(
+                      name: '_forth',
+                      isFinal: false,
+                      ownerName: '',
+                      ownerUri: '',
+                      eval: FakeEvalOnDartLibrary(),
+                      ref: Result.error(Error()),
+                      isDefinedByDependency: false,
+                    ),
+                  ],
+                  hash: 0,
+                  instanceRefId: 'object',
+                  setter: null,
+                  evalForInstance: FakeEvalOnDartLibrary(),
+                  type: 'MyClass',
+                ),
+              ),
+            ),
+            rawInstanceProvider(pathForProperty('first'))
+                .overrideWithValue(int42Instance),
+            rawInstanceProvider(pathForProperty('_second'))
+                .overrideWithValue(int42Instance),
+            rawInstanceProvider(pathForProperty('third'))
+                .overrideWithValue(int42Instance),
+            rawInstanceProvider(pathForProperty('_forth'))
+                .overrideWithValue(int42Instance),
+          ],
+          child: const MaterialApp(
+            home: Scaffold(
+              body: InstanceViewer(
+                showInternalProperties: false,
+                rootPath: objPath,
+              ),
+            ),
+          ),
+        ),
+      );
+
+      await expectLater(
+        find.byType(MaterialApp),
+        matchesGoldenFile('show_internal_properties.png'),
+      );
+    });
+
     testWidgets('field editing flow', (tester) async {
       const objPath = InstancePath.fromInstanceId('obj');
       final propertyPath = objPath.pathForChild(
@@ -164,7 +257,10 @@
           ],
           child: const MaterialApp(
             home: Scaffold(
-              body: InstanceViewer(rootPath: objPath),
+              body: InstanceViewer(
+                showInternalProperties: true,
+                rootPath: objPath,
+              ),
             ),
           ),
         ),
@@ -202,7 +298,10 @@
           ],
           child: const MaterialApp(
             home: Scaffold(
-              body: InstanceViewer(rootPath: InstancePath.fromInstanceId('0')),
+              body: InstanceViewer(
+                showInternalProperties: true,
+                rootPath: InstancePath.fromInstanceId('0'),
+              ),
             ),
           ),
         ),
@@ -230,7 +329,10 @@
           container: container,
           child: const MaterialApp(
             home: Scaffold(
-              body: InstanceViewer(rootPath: InstancePath.fromInstanceId('0')),
+              body: InstanceViewer(
+                showInternalProperties: true,
+                rootPath: InstancePath.fromInstanceId('0'),
+              ),
             ),
           ),
         ),
@@ -280,7 +382,10 @@
           container: container,
           child: const MaterialApp(
             home: Scaffold(
-              body: InstanceViewer(rootPath: InstancePath.fromInstanceId('0')),
+              body: InstanceViewer(
+                showInternalProperties: true,
+                rootPath: InstancePath.fromInstanceId('0'),
+              ),
             ),
           ),
         ),
@@ -327,7 +432,10 @@
           container: container,
           child: const MaterialApp(
             home: Scaffold(
-              body: InstanceViewer(rootPath: InstancePath.fromInstanceId('0')),
+              body: InstanceViewer(
+                showInternalProperties: true,
+                rootPath: InstancePath.fromInstanceId('0'),
+              ),
             ),
           ),
         ),
@@ -373,6 +481,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('enum'),
               ),
             ),
@@ -401,6 +510,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('null'),
               ),
             ),
@@ -429,6 +539,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('bool'),
               ),
             ),
@@ -457,6 +568,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('string'),
               ),
             ),
@@ -485,6 +597,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('num'),
               ),
             ),
@@ -536,6 +649,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('map'),
               ),
             ),
@@ -621,6 +735,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('object'),
               ),
             ),
@@ -696,6 +811,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('list'),
               ),
             ),
@@ -739,6 +855,7 @@
           child: const MaterialApp(
             home: Scaffold(
               body: InstanceViewer(
+                showInternalProperties: true,
                 rootPath: InstancePath.fromInstanceId('list2'),
               ),
             ),
diff --git a/packages/devtools_app/test/instance_viewer/show_internal_properties.png b/packages/devtools_app/test/instance_viewer/show_internal_properties.png
new file mode 100644
index 0000000..4b40b4f
--- /dev/null
+++ b/packages/devtools_app/test/instance_viewer/show_internal_properties.png
Binary files differ
diff --git a/packages/devtools_testing/lib/provider/provider_controller_test.dart b/packages/devtools_testing/lib/provider/provider_controller_test.dart
index 148eaed..e7f92a5 100644
--- a/packages/devtools_testing/lib/provider/provider_controller_test.dart
+++ b/packages/devtools_testing/lib/provider/provider_controller_test.dart
@@ -278,14 +278,14 @@
                         .having((e) => e.isFinal, 'isFinal', true)
                         .having((e) => e.isPrivate, 'isPrivate', false)
                         .having((e) => e.isDefinedByDependency,
-                            'isDefinedByDependency', true),
+                            'isDefinedByDependency', false),
                     isA<ObjectField>()
                         .having((e) => e.ownerName, 'ownerName', 'Counter')
                         .having((e) => e.name, 'name', '_count')
                         .having((e) => e.isFinal, 'isFinal', false)
                         .having((e) => e.isPrivate, 'isPrivate', true)
                         .having((e) => e.isDefinedByDependency,
-                            'isDefinedByDependency', true),
+                            'isDefinedByDependency', false),
                     isA<ObjectField>()
                         .having(
                             (e) => e.ownerName, 'ownerName', 'ChangeNotifier')
@@ -293,7 +293,7 @@
                         .having((e) => e.isFinal, 'isFinal', false)
                         .having((e) => e.isPrivate, 'isPrivate', true)
                         .having((e) => e.isDefinedByDependency,
-                            'isDefinedByDependency', false),
+                            'isDefinedByDependency', true),
                   ]),
                 ),
           ),
@@ -309,79 +309,79 @@
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'enumeration')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'finalVar')
                 .having((e) => e.isFinal, 'isFinal', true)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'float')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'integer')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'lateWithInitializer')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'list')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'map')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'nill')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'plainInstance')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'string')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', 'uninitializedLate')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
             isA<ObjectField>()
                 .having((e) => e.name, 'name', '_getterAndSetter')
                 .having((e) => e.isFinal, 'isFinal', false)
                 .having((e) => e.isPrivate, 'isPrivate', true)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true),
+                    false),
           ]),
         );
 
@@ -461,7 +461,7 @@
                 .having((e) => e.isFinal, 'isFinal', true)
                 .having((e) => e.isPrivate, 'isPrivate', false)
                 .having((e) => e.isDefinedByDependency, 'isDefinedByDependency',
-                    true)
+                    false)
           ]).having((e) => e.setter, 'setter', isNotNull),
         );
 
@@ -502,7 +502,7 @@
                   .having((e) => e.isFinal, 'isFinal', true)
                   .having((e) => e.isPrivate, 'isPrivate', false)
                   .having((e) => e.isDefinedByDependency,
-                      'isDefinedByDependency', true)
+                      'isDefinedByDependency', false)
             ]),
             isA<NullInstance>()
           ]),
diff --git a/packages/devtools_testing/lib/support/fake_inspector_tree.dart b/packages/devtools_testing/lib/support/fake_inspector_tree.dart
index 02ac94a..877c94e 100644
--- a/packages/devtools_testing/lib/support/fake_inspector_tree.dart
+++ b/packages/devtools_testing/lib/support/fake_inspector_tree.dart
@@ -7,9 +7,9 @@
 import 'dart:async';
 import 'dart:math';
 
-import 'package:flutter/material.dart';
 import 'package:devtools_app/src/inspector/inspector_tree.dart';
 import 'package:devtools_app/src/ui/icons.dart';
+import 'package:flutter/material.dart';
 
 const double fakeRowWidth = 200.0;
 
diff --git a/tool/lib/commands/generate_changelog.dart b/tool/lib/commands/generate_changelog.dart
index 2b4a29c..fef2b97 100644
--- a/tool/lib/commands/generate_changelog.dart
+++ b/tool/lib/commands/generate_changelog.dart
@@ -6,9 +6,8 @@
 import 'dart:convert' show jsonDecode;
 import 'dart:io';
 
-import 'package:http/http.dart' as http;
-
 import 'package:args/command_runner.dart';
+import 'package:http/http.dart' as http;
 
 import '../model.dart';