Drop legacy SDK test, bump min SDK to 2.18, update and fix lints (dart-lang/stream_transform#162)

diff --git a/pkgs/stream_transform/.github/workflows/test-package.yml b/pkgs/stream_transform/.github/workflows/test-package.yml
index 3795fcf..c8964c7 100644
--- a/pkgs/stream_transform/.github/workflows/test-package.yml
+++ b/pkgs/stream_transform/.github/workflows/test-package.yml
@@ -48,7 +48,7 @@
         # 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.14.0, dev]
+        sdk: [2.18.0, dev]
     steps:
       - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
@@ -60,6 +60,3 @@
       - name: Run tests
         run: dart test -p chrome,vm --test-randomize-ordering-seed=random
         if: always() && steps.install.outcome == 'success'
-      - name: Run Legacy tests
-        run: dart test -p chrome,vm --test-randomize-ordering-seed=random legacy_test
-        if: always() && matrix.sdk == '2.14.0' && steps.install.outcome == 'success'
diff --git a/pkgs/stream_transform/CHANGELOG.md b/pkgs/stream_transform/CHANGELOG.md
index 3d2cd69..7c34371 100644
--- a/pkgs/stream_transform/CHANGELOG.md
+++ b/pkgs/stream_transform/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.1-dev
+
+- Require Dart 2.18 or greater
+
 ## 2.1.0
 
 - Add `whereNotNull`.
diff --git a/pkgs/stream_transform/analysis_options.yaml b/pkgs/stream_transform/analysis_options.yaml
index 6af98d7..9dc8788 100644
--- a/pkgs/stream_transform/analysis_options.yaml
+++ b/pkgs/stream_transform/analysis_options.yaml
@@ -21,12 +21,10 @@
     - omit_local_variable_types
     - only_throw_errors
     - prefer_const_constructors
-    - prefer_interpolation_to_compose_strings
     - prefer_single_quotes
     - test_types_in_equals
     - throw_in_finally
     - unawaited_futures
     - unnecessary_lambdas
-    - unnecessary_null_aware_assignments
     - unnecessary_parenthesis
     - unnecessary_statements
diff --git a/pkgs/stream_transform/legacy_test/opt_out_test.dart b/pkgs/stream_transform/legacy_test/opt_out_test.dart
deleted file mode 100644
index 6bd654b..0000000
--- a/pkgs/stream_transform/legacy_test/opt_out_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// 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.
-
-// @dart=2.9
-
-import 'dart:async';
-
-import 'package:async/async.dart';
-import 'package:stream_transform/stream_transform.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('null returned from StreamSubscription.cancel', () {
-    void testNullCancel(
-        String name, Stream<void> Function(Stream<void>) transform) {
-      test(name, () async {
-        var subscription = transform(_NullOnCancelStream()).listen(null);
-        await subscription.cancel();
-      });
-    }
-
-    testNullCancel('asyncMapSample', (s) => s.asyncMapSample((_) async {}));
-    testNullCancel('buffer', (s) => s.buffer(_nonEndingStream()));
-    testNullCancel(
-        'combineLatestAll', (s) => s.combineLatestAll([_NullOnCancelStream()]));
-    testNullCancel('combineLatest',
-        (s) => s.combineLatest(_NullOnCancelStream(), (a, b) {}));
-    testNullCancel('merge', (s) => s.merge(_NullOnCancelStream()));
-
-    test('switchLatest', () async {
-      var subscription =
-          _NullOnCancelStream(Stream<Stream<void>>.value(_NullOnCancelStream()))
-              .switchLatest()
-              .listen(null);
-      await Future(() {});
-      await subscription.cancel();
-    });
-
-    test('concurrentAsyncExpand', () async {
-      var subscription = _NullOnCancelStream(Stream.value(null))
-          .concurrentAsyncExpand((_) => _NullOnCancelStream())
-          .listen(null);
-      await Future(() {});
-      await subscription.cancel();
-    });
-  });
-}
-
-class _NullOnCancelStream<T> extends StreamView<T> {
-  _NullOnCancelStream([Stream<T> stream]) : super(stream ?? _nonEndingStream());
-
-  @override
-  StreamSubscription<T> listen(void Function(T) onData,
-          {Function onError, void Function() onDone, bool cancelOnError}) =>
-      _NullOnCancelSubscription(super.listen(onData,
-          onError: onError, onDone: onDone, cancelOnError: cancelOnError));
-}
-
-class _NullOnCancelSubscription<T> extends DelegatingStreamSubscription<T> {
-  final StreamSubscription<T> _subscription;
-  _NullOnCancelSubscription(this._subscription) : super(_subscription);
-
-  @override
-  Future<void> cancel() {
-    _subscription.cancel();
-    return null;
-  }
-}
-
-Stream<T> _nonEndingStream<T>() => StreamController<T>().stream;
diff --git a/pkgs/stream_transform/lib/src/switch.dart b/pkgs/stream_transform/lib/src/switch.dart
index 4b4cdac..b0fbbad 100644
--- a/pkgs/stream_transform/lib/src/switch.dart
+++ b/pkgs/stream_transform/lib/src/switch.dart
@@ -118,10 +118,10 @@
           };
       }
       controller.onCancel = () {
-        var _innerSubscription = innerSubscription;
+        var sub = innerSubscription;
         var cancels = [
           if (!outerStreamDone) outerSubscription.cancel(),
-          if (_innerSubscription != null) _innerSubscription.cancel(),
+          if (sub != null) sub.cancel(),
         ]
           // Handle opt-out nulls
           ..removeWhere((Object? f) => f == null);
diff --git a/pkgs/stream_transform/pubspec.yaml b/pkgs/stream_transform/pubspec.yaml
index a531122..915dc10 100644
--- a/pkgs/stream_transform/pubspec.yaml
+++ b/pkgs/stream_transform/pubspec.yaml
@@ -1,12 +1,12 @@
 name: stream_transform
-version: 2.1.0
+version: 2.1.1-dev
 description: A collection of utilities to transform and manipulate streams.
 repository: https://github.com/dart-lang/stream_transform
 
 environment:
-  sdk: ">=2.14.0 <3.0.0"
+  sdk: ">=2.18.0 <3.0.0"
 
 dev_dependencies:
   async: ^2.5.0
-  lints: ^1.0.0
+  lints: ^2.0.0
   test: ^1.16.0
diff --git a/pkgs/stream_transform/test/switch_test.dart b/pkgs/stream_transform/test/switch_test.dart
index 00f196a..d2f99a8 100644
--- a/pkgs/stream_transform/test/switch_test.dart
+++ b/pkgs/stream_transform/test/switch_test.dart
@@ -197,7 +197,7 @@
       var outer = StreamController<List<int>>();
 
       var values = [];
-      outer.stream.switchMap((l) => Stream.fromIterable(l)).listen(values.add);
+      outer.stream.switchMap(Stream.fromIterable).listen(values.add);
 
       outer.add([1, 2, 3]);
       await Future(() {});