diff --git a/benchmark/bench.dart b/benchmark/bench.dart
index bf23ce1..d03c249 100644
--- a/benchmark/bench.dart
+++ b/benchmark/bench.dart
@@ -6,13 +6,12 @@
 
 import 'dart:async';
 
-import 'package:dart_services/src/sdk_manager.dart';
-import 'package:logging/logging.dart';
-
 import 'package:dart_services/src/analysis_server.dart';
 import 'package:dart_services/src/bench.dart';
 import 'package:dart_services/src/common.dart';
 import 'package:dart_services/src/compiler.dart';
+import 'package:dart_services/src/sdk_manager.dart';
+import 'package:logging/logging.dart';
 
 void main(List<String> args) async {
   final json = args.contains('--json');
@@ -190,8 +189,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:flutter_web/material.dart';
-import 'package:flutter_web_ui/ui.dart' as ui;
+import 'dart:ui/ui.dart' as ui;
+
+import 'package:flutter/material.dart';
 
 class SpinningSquare extends StatefulWidget {
   @override
diff --git a/lib/src/analysis_servers.dart b/lib/src/analysis_servers.dart
index 4895206..6a56526 100644
--- a/lib/src/analysis_servers.dart
+++ b/lib/src/analysis_servers.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/// A wrapper around an analysis server instance
+/// A wrapper around an analysis server instance.
 library services.analysis_servers;
 
 import 'dart:async';
diff --git a/lib/src/flutter_web.dart b/lib/src/flutter_web.dart
index e078983..2ba5de0 100644
--- a/lib/src/flutter_web.dart
+++ b/lib/src/flutter_web.dart
@@ -8,7 +8,7 @@
 
 import 'sdk_manager.dart';
 
-/// Handle provisioning package:flutter_web and related work.
+/// Support for handling Flutter web snippets.
 class FlutterWebManager {
   final FlutterSdk flutterSdk;
 
diff --git a/test/flutter_web_test.dart b/test/flutter_web_test.dart
index ef8b121..925b8b0 100644
--- a/test/flutter_web_test.dart
+++ b/test/flutter_web_test.dart
@@ -33,16 +33,15 @@
       expect(flutterWebManager.usesFlutterWeb({''}), isFalse);
       expect(flutterWebManager.usesFlutterWeb({'dart:html'}), isFalse);
       expect(flutterWebManager.usesFlutterWeb({'dart:ui'}), isTrue);
-      expect(flutterWebManager.usesFlutterWeb({'package:flutter_web'}), isTrue);
-      expect(
-          flutterWebManager.usesFlutterWeb({'package:flutter_web/'}), isTrue);
+      expect(flutterWebManager.usesFlutterWeb({'package:flutter'}), isTrue);
+      expect(flutterWebManager.usesFlutterWeb({'package:flutter/'}), isTrue);
     });
 
     test('getUnsupportedImport', () {
       expect(flutterWebManager.getUnsupportedImport({'dart:html'}), isNull);
       expect(flutterWebManager.getUnsupportedImport({'dart:ui'}), isNull);
-      expect(flutterWebManager.getUnsupportedImport({'package:flutter_web/'}),
-          isNull);
+      expect(
+          flutterWebManager.getUnsupportedImport({'package:flutter/'}), isNull);
       expect(flutterWebManager.getUnsupportedImport({'package:path'}),
           equals('package:path'));
       expect(flutterWebManager.getUnsupportedImport({'foo.dart'}),
@@ -50,7 +49,7 @@
     });
   });
 
-  group('FlutterWebManager package:flutter_web inited', () {
+  group('FlutterWebManager inited', () {
     FlutterWebManager flutterWebManager;
 
     setUpAll(() async {
diff --git a/tool/grind.dart b/tool/grind.dart
index d9ac1db..cbc8060 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -194,7 +194,7 @@
 
   // Build the artifacts using DDC:
   // dart-sdk/bin/dartdevc -s kernel/flutter_ddc_sdk.dill
-  //     --modules=amd package:flutter_web/animation.dart ...
+  //     --modules=amd package:flutter/animation.dart ...
   final compilerPath =
       path.join(flutterSdkPath.path, 'bin/cache/dart-sdk/bin/dartdevc');
   final dillPath = path.join(flutterSdkPath.path,
