diff --git a/pkgs/stream_transform/.github/workflows/test-package.yml b/pkgs/stream_transform/.github/workflows/test-package.yml
index 2690a5e..b23f0fc 100644
--- a/pkgs/stream_transform/.github/workflows/test-package.yml
+++ b/pkgs/stream_transform/.github/workflows/test-package.yml
@@ -47,8 +47,8 @@
       matrix:
         # Add macos-latest and/or windows-latest if relevant for this package.
         os: [ubuntu-latest]
-        # Bump SDK for Legacy tets when changning min SDK.
-        sdk: [2.18.0, dev]
+        # Bump SDK for Legacy tests when changing min SDK.
+        sdk: [3.1, dev]
     steps:
       - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
       - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d
diff --git a/pkgs/stream_transform/CHANGELOG.md b/pkgs/stream_transform/CHANGELOG.md
index 2ef6fdb..c1e2c0e 100644
--- a/pkgs/stream_transform/CHANGELOG.md
+++ b/pkgs/stream_transform/CHANGELOG.md
@@ -1,6 +1,6 @@
-## 2.1.1-dev
+## 2.1.1-wip
 
-- Require Dart 2.18 or greater
+- Require Dart 3.1 or greater
 - Forward errors from the `trigger` future through to the result stream in
   `takeUntil`. Previously an error would have not closed the stream, and instead
   raised as an unhandled async error.
diff --git a/pkgs/stream_transform/analysis_options.yaml b/pkgs/stream_transform/analysis_options.yaml
index 9dc8788..05f1af1 100644
--- a/pkgs/stream_transform/analysis_options.yaml
+++ b/pkgs/stream_transform/analysis_options.yaml
@@ -1,4 +1,4 @@
-include: package:lints/recommended.yaml
+include: package:dart_flutter_team_lints/analysis_options.yaml
 
 analyzer:
   language:
@@ -7,24 +7,10 @@
 
 linter:
   rules:
-    - always_declare_return_types
     - avoid_bool_literals_in_conditional_expressions
     - avoid_classes_with_only_static_members
-    - avoid_returning_null
     - avoid_returning_this
     - avoid_unused_constructor_parameters
     - cascade_invocations
-    - comment_references
-    - directives_ordering
     - join_return_with_assignment
     - no_adjacent_strings_in_list
-    - omit_local_variable_types
-    - only_throw_errors
-    - prefer_const_constructors
-    - prefer_single_quotes
-    - test_types_in_equals
-    - throw_in_finally
-    - unawaited_futures
-    - unnecessary_lambdas
-    - unnecessary_parenthesis
-    - unnecessary_statements
diff --git a/pkgs/stream_transform/lib/src/async_map.dart b/pkgs/stream_transform/lib/src/async_map.dart
index c2ea253..81a176f 100644
--- a/pkgs/stream_transform/lib/src/async_map.dart
+++ b/pkgs/stream_transform/lib/src/async_map.dart
@@ -59,8 +59,8 @@
   /// pending event.
   ///
   /// Errors from this stream are forwarded directly to the result stream.
-  /// Errors during the conversion are also forwarded to the result stream and are
-  /// considered completing work so the next values are let through.
+  /// Errors during the conversion are also forwarded to the result stream and
+  /// are considered completing work so the next values are let through.
   ///
   /// The result stream will not close until this stream closes and all pending
   /// conversions have finished.
@@ -72,7 +72,7 @@
             trigger: workFinished.stream,
             aggregate: _dropPrevious,
             longPoll: true,
-            onEmpty: _ignore)
+            onEmpty: _ignore<T>)
         ._asyncMapThen(convert, workFinished.add);
   }
 
diff --git a/pkgs/stream_transform/lib/src/combine_latest.dart b/pkgs/stream_transform/lib/src/combine_latest.dart
index 5fbdbf5..15c1b68 100644
--- a/pkgs/stream_transform/lib/src/combine_latest.dart
+++ b/pkgs/stream_transform/lib/src/combine_latest.dart
@@ -152,11 +152,11 @@
   /// at least once, the result stream will emit any time any source stream
   /// emits.
   ///
-  /// The result stream will not close until all source streams have closed. When
-  /// a source stream closes, the result stream will continue to emit the last
-  /// value from the closed stream when the other source streams emit until the
-  /// result stream has closed. If a source stream closes without emitting any
-  /// value, the result stream will close as well.
+  /// The result stream will not close until all source streams have closed.
+  /// When a source stream closes, the result stream will continue to emit the
+  /// last value from the closed stream when the other source streams emit until
+  /// the result stream has closed. If a source stream closes without emitting
+  /// any value, the result stream will close as well.
   ///
   /// For example:
   ///
diff --git a/pkgs/stream_transform/lib/src/switch.dart b/pkgs/stream_transform/lib/src/switch.dart
index b0fbbad..d64fc07 100644
--- a/pkgs/stream_transform/lib/src/switch.dart
+++ b/pkgs/stream_transform/lib/src/switch.dart
@@ -19,7 +19,8 @@
   ///
   /// This means that the source stream is not paused until a sub stream
   /// returned from the [convert] callback is done. Instead, the subscription
-  /// to the sub stream is canceled as soon as the source stream emits a new event.
+  /// to the sub stream is canceled as soon as the source stream emits a new
+  /// event.
   ///
   /// Errors from [convert], the source stream, or any of the sub streams are
   /// forwarded to the result stream.
@@ -36,7 +37,8 @@
   ///
   /// See also:
   /// - [concurrentAsyncExpand], which emits events from all sub streams
-  ///   concurrently instead of cancelling subscriptions to previous subs streams.
+  ///   concurrently instead of cancelling subscriptions to previous subs
+  ///   streams.
   Stream<S> switchMap<S>(Stream<S> Function(T) convert) {
     return map(convert).switchLatest();
   }
diff --git a/pkgs/stream_transform/lib/src/where.dart b/pkgs/stream_transform/lib/src/where.dart
index 6d210ea..76aa28a 100644
--- a/pkgs/stream_transform/lib/src/where.dart
+++ b/pkgs/stream_transform/lib/src/where.dart
@@ -28,10 +28,10 @@
   /// Events on the result stream will be emitted in the order that [test]
   /// completes which may not match the order of this stream.
   ///
-  /// If the source stream is a broadcast stream the result will be as well. When
-  /// used with a broadcast stream behavior also differs from [where] in that
-  /// the [test] function is only called once per event, rather than once per
-  /// listener per event.
+  /// If the source stream is a broadcast stream the result will be as well.
+  /// When used with a broadcast stream behavior also differs from [where] in
+  /// that the [test] function is only called once per event, rather than once
+  /// per listener per event.
   ///
   /// Errors from the source stream are forwarded directly to the result stream.
   /// Errors from [test] are also forwarded to the result stream.
diff --git a/pkgs/stream_transform/pubspec.yaml b/pkgs/stream_transform/pubspec.yaml
index 4d1ffbe..9cd6584 100644
--- a/pkgs/stream_transform/pubspec.yaml
+++ b/pkgs/stream_transform/pubspec.yaml
@@ -1,13 +1,13 @@
 name: stream_transform
-version: 2.1.1-dev
+version: 2.1.1-wip
 description: A collection of utilities to transform and manipulate streams.
 repository: https://github.com/dart-lang/stream_transform
 
 environment:
-  sdk: ">=2.18.0 <3.0.0"
+  sdk: ^3.1.0
 
 dev_dependencies:
   async: ^2.5.0
+  dart_flutter_team_lints: ^2.0.0
   fake_async: ^1.3.0
-  lints: ^2.0.0
   test: ^1.16.0
diff --git a/pkgs/stream_transform/test/async_expand_test.dart b/pkgs/stream_transform/test/async_expand_test.dart
index 3794165..8d84300 100644
--- a/pkgs/stream_transform/test/async_expand_test.dart
+++ b/pkgs/stream_transform/test/async_expand_test.dart
@@ -13,7 +13,7 @@
   test('forwards errors from the convert callback', () async {
     var errors = <String>[];
     var source = Stream.fromIterable([1, 2, 3]);
-    source.concurrentAsyncExpand((i) {
+    source.concurrentAsyncExpand<void>((i) {
       // ignore: only_throw_errors
       throw 'Error: $i';
     }).listen((_) {}, onError: errors.add);
diff --git a/pkgs/stream_transform/test/async_map_buffer_test.dart b/pkgs/stream_transform/test/async_map_buffer_test.dart
index b43c617..2386217 100644
--- a/pkgs/stream_transform/test/async_map_buffer_test.dart
+++ b/pkgs/stream_transform/test/async_map_buffer_test.dart
@@ -158,7 +158,7 @@
 
       if (streamType == 'broadcast') {
         test('multiple listeners all get values', () async {
-          var otherValues = [];
+          var otherValues = <String>[];
           transformed.listen(otherValues.add);
           values.add(1);
           await Future(() {});
diff --git a/pkgs/stream_transform/test/async_map_sample_test.dart b/pkgs/stream_transform/test/async_map_sample_test.dart
index 6cab7d0..62b1b92 100644
--- a/pkgs/stream_transform/test/async_map_sample_test.dart
+++ b/pkgs/stream_transform/test/async_map_sample_test.dart
@@ -158,7 +158,7 @@
 
       if (streamType == 'broadcast') {
         test('multiple listeners all get values', () async {
-          var otherValues = [];
+          var otherValues = <String>[];
           transformed.listen(otherValues.add);
           values.add(1);
           await Future(() {});
@@ -204,6 +204,6 @@
 
   test('allows nulls', () async {
     var stream = Stream<int?>.value(null);
-    await stream.asyncMapSample(expectAsync1((_) async {})).drain();
+    await stream.asyncMapSample(expectAsync1((_) async {})).drain<void>();
   });
 }
diff --git a/pkgs/stream_transform/test/async_where_test.dart b/pkgs/stream_transform/test/async_where_test.dart
index 3a13a38..6ea4e76 100644
--- a/pkgs/stream_transform/test/async_where_test.dart
+++ b/pkgs/stream_transform/test/async_where_test.dart
@@ -37,8 +37,8 @@
   test('forwards values to multiple listeners', () async {
     var values = StreamController<int>.broadcast();
     var filtered = values.stream.asyncWhere((e) async => e > 2);
-    var firstValues = [];
-    var secondValues = [];
+    var firstValues = <int>[];
+    var secondValues = <int>[];
     filtered
       ..listen(firstValues.add)
       ..listen(secondValues.add);
@@ -53,7 +53,7 @@
   });
 
   test('closes streams with multiple listeners', () async {
-    var values = StreamController.broadcast();
+    var values = StreamController<int>.broadcast();
     var predicate = Completer<bool>();
     var filtered = values.stream.asyncWhere((_) => predicate.future);
     var firstDone = false;
@@ -73,15 +73,15 @@
   });
 
   test('forwards errors emitted by the test callback', () async {
-    var errors = [];
-    var emitted = [];
+    var errors = <Object>[];
+    var emitted = <Object>[];
     var values = Stream.fromIterable([1, 2, 3, 4]);
     var filtered = values.asyncWhere((e) async {
       await Future(() {});
       if (e.isEven) throw Exception('$e');
       return true;
     });
-    var done = Completer();
+    var done = Completer<Object?>();
     filtered.listen(emitted.add, onError: errors.add, onDone: done.complete);
     await done.future;
     expect(emitted, [1, 3]);
diff --git a/pkgs/stream_transform/test/audit_test.dart b/pkgs/stream_transform/test/audit_test.dart
index e2f8133..28537db 100644
--- a/pkgs/stream_transform/test/audit_test.dart
+++ b/pkgs/stream_transform/test/audit_test.dart
@@ -119,7 +119,7 @@
               values.add(1);
               async.elapse(const Duration(milliseconds: 3));
               values.add(2);
-              var otherValues = [];
+              var otherValues = <int>[];
               transformed.listen(otherValues.add);
               values.add(3);
               async.elapse(const Duration(milliseconds: 3));
diff --git a/pkgs/stream_transform/test/buffer_test.dart b/pkgs/stream_transform/test/buffer_test.dart
index 1675c28..830f555 100644
--- a/pkgs/stream_transform/test/buffer_test.dart
+++ b/pkgs/stream_transform/test/buffer_test.dart
@@ -228,7 +228,7 @@
           test('emits empty list before values', () async {
             trigger.add(null);
             await Future(() {});
-            expect(emittedValues, [[]]);
+            expect(emittedValues, [<int>[]]);
           });
 
           test('emits empty list after emitting values', () async {
@@ -242,7 +242,7 @@
             await Future(() {});
             expect(emittedValues, [
               [1, 2],
-              []
+              <int>[]
             ]);
           });
         });
diff --git a/pkgs/stream_transform/test/combine_latest_test.dart b/pkgs/stream_transform/test/combine_latest_test.dart
index d2c6003..1985c75 100644
--- a/pkgs/stream_transform/test/combine_latest_test.dart
+++ b/pkgs/stream_transform/test/combine_latest_test.dart
@@ -127,7 +127,7 @@
       var other = StreamController<int>();
       int sum(int a, int b) => throw _NumberedException(3);
 
-      var errors = [];
+      var errors = <Object>[];
       source.stream
           .combineLatest(other.stream, sum)
           .listen(null, onError: errors.add);
diff --git a/pkgs/stream_transform/test/concurrent_async_map_test.dart b/pkgs/stream_transform/test/concurrent_async_map_test.dart
index 3c46a96..1807f9f 100644
--- a/pkgs/stream_transform/test/concurrent_async_map_test.dart
+++ b/pkgs/stream_transform/test/concurrent_async_map_test.dart
@@ -111,7 +111,7 @@
 
       if (streamType == 'broadcast') {
         test('multiple listeners all get values', () async {
-          var otherValues = [];
+          var otherValues = <String>[];
           transformed.listen(otherValues.add);
           controller.add(1);
           await Future(() {});
diff --git a/pkgs/stream_transform/test/debounce_test.dart b/pkgs/stream_transform/test/debounce_test.dart
index 6b9775f..19de055 100644
--- a/pkgs/stream_transform/test/debounce_test.dart
+++ b/pkgs/stream_transform/test/debounce_test.dart
@@ -100,7 +100,7 @@
           test('multiple listeners all get values', () {
             fakeAsync((async) {
               listen();
-              var otherValues = [];
+              var otherValues = <int>[];
               transformed.listen(otherValues.add);
               values
                 ..add(1)
@@ -157,7 +157,7 @@
           test('multiple listeners all get values', () {
             fakeAsync((async) {
               listen();
-              var otherValues = [];
+              var otherValues = <int>[];
               transformed.listen(otherValues.add);
               values
                 ..add(1)
@@ -221,7 +221,7 @@
           test('multiple listeners all get values', () {
             fakeAsync((async) {
               listen();
-              var otherValues = [];
+              var otherValues = <int>[];
               transformed.listen(otherValues.add);
               values
                 ..add(1)
@@ -284,7 +284,7 @@
           test('multiple listeners all get values', () {
             fakeAsync((async) {
               listen();
-              var otherValues = [];
+              var otherValues = <List<int>>[];
               transformed.listen(otherValues.add);
               values
                 ..add(1)
diff --git a/pkgs/stream_transform/test/followd_by_test.dart b/pkgs/stream_transform/test/followd_by_test.dart
index 436d613..d600d13 100644
--- a/pkgs/stream_transform/test/followd_by_test.dart
+++ b/pkgs/stream_transform/test/followd_by_test.dart
@@ -138,13 +138,13 @@
           });
 
           test('forwards values to multiple listeners', () async {
-            var otherValues = [];
+            var otherValues = <int>[];
             transformed.listen(otherValues.add);
             first.add(1);
             await first.close();
             second.add(2);
             await Future(() {});
-            var thirdValues = [];
+            var thirdValues = <int>[];
             transformed.listen(thirdValues.add);
             second.add(3);
             await Future(() {});
diff --git a/pkgs/stream_transform/test/merge_test.dart b/pkgs/stream_transform/test/merge_test.dart
index 7217945..ecbf97f 100644
--- a/pkgs/stream_transform/test/merge_test.dart
+++ b/pkgs/stream_transform/test/merge_test.dart
@@ -20,12 +20,12 @@
 
     test('cancels both sources', () async {
       var firstCanceled = false;
-      var first = StreamController()
+      var first = StreamController<int>()
         ..onCancel = () {
           firstCanceled = true;
         };
       var secondCanceled = false;
-      var second = StreamController()
+      var second = StreamController<int>()
         ..onCancel = () {
           secondCanceled = true;
         };
@@ -36,8 +36,8 @@
     });
 
     test('completes when both sources complete', () async {
-      var first = StreamController();
-      var second = StreamController();
+      var first = StreamController<int>();
+      var second = StreamController<int>();
       var isDone = false;
       first.stream.merge(second.stream).listen((_) {}, onDone: () {
         isDone = true;
@@ -49,9 +49,9 @@
     });
 
     test('can cancel and relisten to broadcast stream', () async {
-      var first = StreamController.broadcast();
-      var second = StreamController();
-      var emittedValues = [];
+      var first = StreamController<int>.broadcast();
+      var second = StreamController<int>();
+      var emittedValues = <int>[];
       var transformed = first.stream.merge(second.stream);
       var subscription = transformed.listen(emittedValues.add);
       first.add(1);
@@ -84,17 +84,17 @@
 
     test('handles mix of broadcast and single-subscription', () async {
       var firstCanceled = false;
-      var first = StreamController.broadcast()
+      var first = StreamController<int>.broadcast()
         ..onCancel = () {
           firstCanceled = true;
         };
       var secondBroadcastCanceled = false;
-      var secondBroadcast = StreamController.broadcast()
+      var secondBroadcast = StreamController<int>.broadcast()
         ..onCancel = () {
           secondBroadcastCanceled = true;
         };
       var secondSingleCanceled = false;
-      var secondSingle = StreamController()
+      var secondSingle = StreamController<int>()
         ..onCancel = () {
           secondSingleCanceled = true;
         };
@@ -102,8 +102,8 @@
       var merged =
           first.stream.mergeAll([secondBroadcast.stream, secondSingle.stream]);
 
-      var firstListenerValues = [];
-      var secondListenerValues = [];
+      var firstListenerValues = <int>[];
+      var secondListenerValues = <int>[];
 
       var firstSubscription = merged.listen(firstListenerValues.add);
       var secondSubscription = merged.listen(secondListenerValues.add);
diff --git a/pkgs/stream_transform/test/scan_test.dart b/pkgs/stream_transform/test/scan_test.dart
index 3a126ec..a0311c5 100644
--- a/pkgs/stream_transform/test/scan_test.dart
+++ b/pkgs/stream_transform/test/scan_test.dart
@@ -18,7 +18,7 @@
     });
 
     test('can create a broadcast stream', () {
-      var source = StreamController.broadcast();
+      var source = StreamController<int>.broadcast();
 
       var transformed = source.stream.scan(null, (_, __) {});
 
@@ -30,7 +30,7 @@
 
       int sum(int x, int y) => x + y;
 
-      var errors = [];
+      var errors = <Object>[];
 
       source.stream.scan(0, sum).listen(null, onError: errors.add);
 
@@ -95,7 +95,7 @@
 
         Future<int> combine(int x, int y) async => throw StateError('fail');
 
-        var errors = [];
+        var errors = <Object>[];
 
         source.stream.scan(0, combine).listen(null, onError: errors.add);
 
diff --git a/pkgs/stream_transform/test/switch_test.dart b/pkgs/stream_transform/test/switch_test.dart
index d2f99a8..9e70c08 100644
--- a/pkgs/stream_transform/test/switch_test.dart
+++ b/pkgs/stream_transform/test/switch_test.dart
@@ -196,7 +196,7 @@
     test('uses map function', () async {
       var outer = StreamController<List<int>>();
 
-      var values = [];
+      var values = <int>[];
       outer.stream.switchMap(Stream.fromIterable).listen(values.add);
 
       outer.add([1, 2, 3]);
@@ -207,9 +207,10 @@
     });
 
     test('can create a broadcast stream', () async {
-      var outer = StreamController.broadcast();
+      var outer = StreamController<int>.broadcast();
 
-      var transformed = outer.stream.switchMap((_) => const Stream.empty());
+      var transformed =
+          outer.stream.switchMap((_) => const Stream<int>.empty());
 
       expect(transformed.isBroadcast, true);
     });
@@ -217,7 +218,7 @@
     test('forwards errors from the convert callback', () async {
       var errors = <String>[];
       var source = Stream.fromIterable([1, 2, 3]);
-      source.switchMap((i) {
+      source.switchMap<int>((i) {
         // ignore: only_throw_errors
         throw 'Error: $i';
       }).listen((_) {}, onError: errors.add);
diff --git a/pkgs/stream_transform/test/take_until_test.dart b/pkgs/stream_transform/test/take_until_test.dart
index 9c73d09..982b3da 100644
--- a/pkgs/stream_transform/test/take_until_test.dart
+++ b/pkgs/stream_transform/test/take_until_test.dart
@@ -80,7 +80,7 @@
         await values.close();
         closeTrigger.completeError('sad');
         await Future(() {});
-        expect(errors, []);
+        expect(errors, <Object>[]);
       });
 
       test('cancels value subscription when trigger fires', () async {
@@ -91,7 +91,7 @@
 
       if (streamType == 'broadcast') {
         test('multiple listeners all get values', () async {
-          var otherValues = [];
+          var otherValues = <Object>[];
           transformed.listen(otherValues.add);
           values
             ..add(1)
diff --git a/pkgs/stream_transform/test/tap_test.dart b/pkgs/stream_transform/test/tap_test.dart
index a42bdc6..f2b4346 100644
--- a/pkgs/stream_transform/test/tap_test.dart
+++ b/pkgs/stream_transform/test/tap_test.dart
@@ -9,7 +9,7 @@
 
 void main() {
   test('calls function for values', () async {
-    var valuesSeen = [];
+    var valuesSeen = <int>[];
     var stream = Stream.fromIterable([1, 2, 3]);
     await stream.tap(valuesSeen.add).last;
     expect(valuesSeen, [1, 2, 3]);
@@ -23,7 +23,7 @@
 
   test('calls function for errors', () async {
     dynamic error;
-    var source = StreamController();
+    var source = StreamController<int>();
     source.stream.tap((_) {}, onError: (e, st) {
       error = e;
     }).listen((_) {}, onError: (_) {});
@@ -34,8 +34,9 @@
 
   test('forwards errors', () async {
     dynamic error;
-    var source = StreamController();
-    source.stream.tap((_) {}, onError: (e, st) {}).listen((_) {}, onError: (e) {
+    var source = StreamController<int>();
+    source.stream.tap((_) {}, onError: (e, st) {}).listen((_) {},
+        onError: (Object e) {
       error = e;
     });
     source.addError('error');
@@ -45,7 +46,7 @@
 
   test('calls function on done', () async {
     var doneCalled = false;
-    var source = StreamController();
+    var source = StreamController<int>();
     source.stream.tap((_) {}, onDone: () {
       doneCalled = true;
     }).listen((_) {});
@@ -56,7 +57,7 @@
   test('forwards only once with multiple listeners on a broadcast stream',
       () async {
     var dataCallCount = 0;
-    var source = StreamController.broadcast();
+    var source = StreamController<int>.broadcast();
     source.stream.tap((_) {
       dataCallCount++;
     })
@@ -71,7 +72,7 @@
       'forwards errors only once with multiple listeners on a broadcast stream',
       () async {
     var errorCallCount = 0;
-    var source = StreamController.broadcast();
+    var source = StreamController<int>.broadcast();
     source.stream.tap((_) {}, onError: (_, __) {
       errorCallCount++;
     })
@@ -85,7 +86,7 @@
   test('calls onDone only once with multiple listeners on a broadcast stream',
       () async {
     var doneCallCount = 0;
-    var source = StreamController.broadcast();
+    var source = StreamController<int>.broadcast();
     source.stream.tap((_) {}, onDone: () {
       doneCallCount++;
     })
@@ -96,9 +97,9 @@
   });
 
   test('forwards values to multiple listeners', () async {
-    var source = StreamController.broadcast();
-    var emittedValues1 = [];
-    var emittedValues2 = [];
+    var source = StreamController<int>.broadcast();
+    var emittedValues1 = <int>[];
+    var emittedValues2 = <int>[];
     source.stream.tap((_) {})
       ..listen(emittedValues1.add)
       ..listen(emittedValues2.add);
diff --git a/pkgs/stream_transform/test/where_not_null_test.dart b/pkgs/stream_transform/test/where_not_null_test.dart
index c7e4e9b..c9af794 100644
--- a/pkgs/stream_transform/test/where_not_null_test.dart
+++ b/pkgs/stream_transform/test/where_not_null_test.dart
@@ -23,8 +23,8 @@
   test('forwards values to multiple listeners', () async {
     var values = StreamController<Object?>.broadcast();
     var filtered = values.stream.whereNotNull();
-    var firstValues = [];
-    var secondValues = [];
+    var firstValues = <Object>[];
+    var secondValues = <Object>[];
     filtered
       ..listen(firstValues.add)
       ..listen(secondValues.add);
diff --git a/pkgs/stream_transform/test/where_type_test.dart b/pkgs/stream_transform/test/where_type_test.dart
index 1a65dd6..4cbea37 100644
--- a/pkgs/stream_transform/test/where_type_test.dart
+++ b/pkgs/stream_transform/test/where_type_test.dart
@@ -21,10 +21,10 @@
   });
 
   test('forwards values to multiple listeners', () async {
-    var values = StreamController.broadcast();
+    var values = StreamController<Object>.broadcast();
     var filtered = values.stream.whereType<String>();
-    var firstValues = [];
-    var secondValues = [];
+    var firstValues = <Object>[];
+    var secondValues = <Object>[];
     filtered
       ..listen(firstValues.add)
       ..listen(secondValues.add);
@@ -39,7 +39,7 @@
   });
 
   test('closes streams with multiple listeners', () async {
-    var values = StreamController.broadcast();
+    var values = StreamController<Object>.broadcast();
     var filtered = values.stream.whereType<String>();
     var firstDone = false;
     var secondDone = false;
