Migrate framework tests for rendering, semantics, widgets to null safety (#67453)

Migrate framework tests for rendering, semantics, widgets to null safety.
diff --git a/packages/flutter/test/rendering/slivers_block_test.dart b/packages/flutter/test/rendering/slivers_block_test.dart
index cdb61b8..cb5d8e0 100644
--- a/packages/flutter/test/rendering/slivers_block_test.dart
+++ b/packages/flutter/test/rendering/slivers_block_test.dart
@@ -2,11 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter/animation.dart';
-import 'package:meta/meta.dart';
 
 import '../flutter_test_alternative.dart';
 
@@ -14,22 +11,21 @@
 
 class TestRenderSliverBoxChildManager extends RenderSliverBoxChildManager {
   TestRenderSliverBoxChildManager({
-    this.children,
+    required this.children,
   });
 
-  RenderSliverList _renderObject;
+  late RenderSliverList _renderObject;
   List<RenderBox> children;
 
   RenderSliverList createRenderObject() {
-    assert(_renderObject == null);
     _renderObject = RenderSliverList(childManager: this);
     return _renderObject;
   }
 
-  int _currentlyUpdatingChildIndex;
+  int? _currentlyUpdatingChildIndex;
 
   @override
-  void createChild(int index, { @required RenderBox after }) {
+  void createChild(int index, { required RenderBox? after }) {
     if (index < 0 || index >= children.length)
       return;
     try {
@@ -48,13 +44,13 @@
   @override
   double estimateMaxScrollOffset(
     SliverConstraints constraints, {
-    int firstIndex,
-    int lastIndex,
-    double leadingScrollOffset,
-    double trailingScrollOffset,
+    int? firstIndex,
+    int? lastIndex,
+    double? leadingScrollOffset,
+    double? trailingScrollOffset,
   }) {
-    assert(lastIndex >= firstIndex);
-    return children.length * (trailingScrollOffset - leadingScrollOffset) / (lastIndex - firstIndex + 1);
+    assert(lastIndex! >= firstIndex!);
+    return children.length * (trailingScrollOffset! - leadingScrollOffset!) / (lastIndex! - firstIndex! + 1);
   }
 
   @override
@@ -104,8 +100,8 @@
   @override
   Future<void> animateTo(
     double to, {
-    @required Duration duration,
-    @required Curve curve,
+    required Duration duration,
+    required Curve curve,
   }) async {
     // Do nothing, not required in test.
   }
@@ -301,7 +297,7 @@
     root.offset = ViewportOffset.fixed(0.0);
     pumpFrame();
 
-    expect(inner.geometry.scrollOffsetCorrection, isNull);
+    expect(inner.geometry?.scrollOffsetCorrection, isNull);
   });
 
   test('SliverList - no correction when tiny double precision error', () {
diff --git a/packages/flutter/test/rendering/slivers_helpers_test.dart b/packages/flutter/test/rendering/slivers_helpers_test.dart
index 0b3b9a2..5d94252 100644
--- a/packages/flutter/test/rendering/slivers_helpers_test.dart
+++ b/packages/flutter/test/rendering/slivers_helpers_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/flutter/test/rendering/slivers_layout_test.dart b/packages/flutter/test/rendering/slivers_layout_test.dart
index c26cc19..3bdb82d 100644
--- a/packages/flutter/test/rendering/slivers_layout_test.dart
+++ b/packages/flutter/test/rendering/slivers_layout_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import '../flutter_test_alternative.dart';
 
diff --git a/packages/flutter/test/rendering/slivers_test.dart b/packages/flutter/test/rendering/slivers_test.dart
index 5673bce..23277d9 100644
--- a/packages/flutter/test/rendering/slivers_test.dart
+++ b/packages/flutter/test/rendering/slivers_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/foundation.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/rendering.dart';
@@ -872,8 +870,7 @@
         crossAxisOffset: 0.0,
         mainAxisPosition: 0.0,
         crossAxisPosition: 0.0,
-        hitTest: (SliverHitTestResult result, { double mainAxisPosition, double crossAxisPosition }) {
-          expect(result, isNotNull);
+        hitTest: (SliverHitTestResult result, { required double mainAxisPosition, required double crossAxisPosition }) {
           mainAxisPositions.add(mainAxisPosition);
           crossAxisPositions.add(crossAxisPosition);
           return true;
@@ -891,8 +888,7 @@
         crossAxisOffset: 6.0,
         mainAxisPosition: 10.0,
         crossAxisPosition: 20.0,
-        hitTest: (SliverHitTestResult result, { double mainAxisPosition, double crossAxisPosition }) {
-          expect(result, isNotNull);
+        hitTest: (SliverHitTestResult result, { required double mainAxisPosition, required double crossAxisPosition }) {
           mainAxisPositions.add(mainAxisPosition);
           crossAxisPositions.add(crossAxisPosition);
           return false;
@@ -910,8 +906,7 @@
         crossAxisOffset: -6.0,
         mainAxisPosition: 10.0,
         crossAxisPosition: 20.0,
-        hitTest: (SliverHitTestResult result, { double mainAxisPosition, double crossAxisPosition }) {
-          expect(result, isNotNull);
+        hitTest: (SliverHitTestResult result, { required double mainAxisPosition, required double crossAxisPosition }) {
           mainAxisPositions.add(mainAxisPosition);
           crossAxisPositions.add(crossAxisPosition);
           return false;
@@ -926,8 +921,8 @@
 
     test('addWithAxisOffset with non zero paintOffset', () {
       final SliverHitTestResult result = SliverHitTestResult();
-      double recordedMainAxisPosition;
-      double recordedCrossAxisPosition;
+      late double recordedMainAxisPosition;
+      late double recordedCrossAxisPosition;
       final HitTestEntry entry = HitTestEntry(_DummyHitTestTarget());
       const Offset paintOffset = Offset(7, 11);
 
@@ -937,8 +932,7 @@
         crossAxisOffset: 6.0,
         mainAxisPosition: 10.0,
         crossAxisPosition: 20.0,
-        hitTest: (SliverHitTestResult result, { double mainAxisPosition, double crossAxisPosition }) {
-          expect(result, isNotNull);
+        hitTest: (SliverHitTestResult result, { required double mainAxisPosition, required double crossAxisPosition }) {
           recordedMainAxisPosition = mainAxisPosition;
           recordedCrossAxisPosition = crossAxisPosition;
           result.add(entry);
@@ -949,7 +943,7 @@
       expect(recordedMainAxisPosition, 10.0 - 5.0);
       expect(recordedCrossAxisPosition, 20.0 - 6.0);
       expect(
-        entry.transform..translate(paintOffset.dx, paintOffset.dy),
+        entry.transform!..translate(paintOffset.dx, paintOffset.dy),
         Matrix4.identity(),
       );
     });
diff --git a/packages/flutter/test/rendering/stack_test.dart b/packages/flutter/test/rendering/stack_test.dart
index 33c5d98..9449f0d 100644
--- a/packages/flutter/test/rendering/stack_test.dart
+++ b/packages/flutter/test/rendering/stack_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import '../flutter_test_alternative.dart';
 
diff --git a/packages/flutter/test/rendering/table_border_test.dart b/packages/flutter/test/rendering/table_border_test.dart
index 3cf9842..49a9d18 100644
--- a/packages/flutter/test/rendering/table_border_test.dart
+++ b/packages/flutter/test/rendering/table_border_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
@@ -104,8 +102,8 @@
     expect(TableBorder.lerp(tableA, tableC, 0.5), tableB);
     expect(TableBorder.lerp(tableA, tableB, 2.0), tableC);
     expect(TableBorder.lerp(tableB, tableC, -1.0), tableA);
-    expect(TableBorder.lerp(tableA, tableC, 0.9195).isUniform, isFalse);
-    expect(TableBorder.lerp(tableA, tableC, 0.9195).dimensions,
+    expect(TableBorder.lerp(tableA, tableC, 0.9195)!.isUniform, isFalse);
+    expect(TableBorder.lerp(tableA, tableC, 0.9195)!.dimensions,
            EdgeInsets.lerp(tableA.dimensions, tableC.dimensions, 0.9195));
   });
 
diff --git a/packages/flutter/test/rendering/table_test.dart b/packages/flutter/test/rendering/table_test.dart
index bd3641e..0d082e1 100644
--- a/packages/flutter/test/rendering/table_test.dart
+++ b/packages/flutter/test/rendering/table_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/flutter/test/rendering/transform_test.dart b/packages/flutter/test/rendering/transform_test.dart
index 8852022..24717ca 100644
--- a/packages/flutter/test/rendering/transform_test.dart
+++ b/packages/flutter/test/rendering/transform_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'dart:math' as math;
 
 import 'package:flutter/rendering.dart';
diff --git a/packages/flutter/test/rendering/view_test.dart b/packages/flutter/test/rendering/view_test.dart
index 8599f63..396688c 100644
--- a/packages/flutter/test/rendering/view_test.dart
+++ b/packages/flutter/test/rendering/view_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/flutter/test/rendering/viewport_caching_test.dart b/packages/flutter/test/rendering/viewport_caching_test.dart
index 6481640..95df6cd 100644
--- a/packages/flutter/test/rendering/viewport_caching_test.dart
+++ b/packages/flutter/test/rendering/viewport_caching_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 // This file is separate from viewport_test.dart because we can't use both
 // testWidgets and rendering_tester in the same file - testWidgets will
 // initialize a binding, which rendering_tester will attempt to re-initialize
@@ -18,7 +16,7 @@
   const double width = 800;
   const double height = 600;
   Rect rectExpandedOnAxis(double value) => Rect.fromLTRB(0.0, 0.0 - value, width, height + value);
-  List<RenderSliver> children;
+  late List<RenderSliver> children;
 
   setUp(() {
     children = <RenderSliver>[
diff --git a/packages/flutter/test/rendering/viewport_test.dart b/packages/flutter/test/rendering/viewport_test.dart
index 6816221..de05617 100644
--- a/packages/flutter/test/rendering/viewport_test.dart
+++ b/packages/flutter/test/rendering/viewport_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 // This file is separate from viewport_caching_test.dart because we can't use
 // both testWidgets and rendering_tester in the same file - testWidgets will
 // initialize a binding, which rendering_tester will attempt to re-initialize
@@ -19,15 +17,15 @@
 class _TestSliverPersistentHeaderDelegate extends SliverPersistentHeaderDelegate {
   _TestSliverPersistentHeaderDelegate({
     this.key,
-    this.minExtent,
-    this.maxExtent,
+    required this.minExtent,
+    required this.maxExtent,
     this.child,
     this.vsync = const TestVSync(),
     this.showOnScreenConfiguration = const PersistentHeaderShowOnScreenConfiguration(),
   });
 
-  final Key key;
-  final Widget child;
+  final Key? key;
+  final Widget? child;
 
   @override
   final double maxExtent;
@@ -36,7 +34,7 @@
   final double minExtent;
 
   @override
-  final TickerProvider vsync;
+  final TickerProvider? vsync;
 
   @override
   final PersistentHeaderShowOnScreenConfiguration showOnScreenConfiguration;
@@ -537,11 +535,19 @@
   });
 
   testWidgets('Nested Viewports showOnScreen', (WidgetTester tester) async {
-    final List<List<Widget>> children = List<List<Widget>>(10);
     final List<ScrollController> controllersX = List<ScrollController>.generate(10, (int i) => ScrollController(initialScrollOffset: 400.0));
     final ScrollController controllerY  = ScrollController(initialScrollOffset: 400.0);
+    final List<List<Widget>> children = List<List<Widget>>.generate(10, (int y) {
+      return List<Widget>.generate(10, (int x) {
+        return Container(
+          height: 100.0,
+          width: 100.0,
+          child: Text('$x,$y'),
+        );
+      });
+    });
 
-    /// Builds a gird:
+    /// Builds a grid:
     ///
     ///       <- x ->
     ///   0 1 2 3 4 5 6 7 8 9
@@ -574,13 +580,7 @@
                   child: ListView(
                     scrollDirection: Axis.horizontal,
                     controller: controllersX[y],
-                    children: children[y] = List<Widget>.generate(10, (int x) {
-                      return Container(
-                        height: 100.0,
-                        width: 100.0,
-                        child: Text('$x,$y'),
-                      );
-                    }),
+                    children: children[y],
                   ),
                 );
               }),
@@ -695,9 +695,15 @@
   });
 
   group('Nested viewports (same orientation) showOnScreen', () {
-    List<Widget> children;
+    final List<Widget> children = List<Widget>.generate(10, (int i) {
+      return Container(
+        height: 100.0,
+        width: 300.0,
+        child: Text('$i'),
+      );
+    });
 
-    Future<void> buildNestedScroller({ WidgetTester tester, ScrollController inner, ScrollController outer }) {
+    Future<void> buildNestedScroller({ required WidgetTester tester, required ScrollController inner, required ScrollController outer }) {
       return tester.pumpWidget(
         Directionality(
           textDirection: TextDirection.ltr,
@@ -716,13 +722,7 @@
                     width: 300.0,
                     child: ListView(
                       controller: inner,
-                      children: children = List<Widget>.generate(10, (int i) {
-                        return Container(
-                          height: 100.0,
-                          width: 300.0,
-                          child: Text('$i'),
-                        );
-                      }),
+                      children: children,
                     ),
                   ),
                   Container(
@@ -1127,12 +1127,12 @@
   });
 
   void testFloatingHeaderShowOnScreen({ bool animated = true, Axis axis = Axis.vertical }) {
-    final TickerProvider vsync = animated ? const TestVSync() : null;
+    final TickerProvider? vsync = animated ? const TestVSync() : null;
     const Key headerKey = Key('header');
-    List<Widget> children;
-    ScrollController controller;
+    late List<Widget> children;
+    final ScrollController controller = ScrollController(initialScrollOffset: 300.0);
 
-    Widget buildList({ SliverPersistentHeader floatingHeader, bool reversed = false }) {
+    Widget buildList({ required SliverPersistentHeader floatingHeader, bool reversed = false }) {
       return Directionality(
         textDirection: TextDirection.ltr,
         child: Center(
@@ -1142,7 +1142,7 @@
             child: CustomScrollView(
               scrollDirection: axis,
               center: reversed ? const Key('19') : null,
-              controller: controller = ScrollController(initialScrollOffset: 300.0),
+              controller: controller,
               slivers: children = List<Widget>.generate(20, (int i) {
                   return i == 10
                   ? floatingHeader
@@ -1164,7 +1164,7 @@
     double mainAxisExtent(WidgetTester tester, Finder finder) {
       final RenderObject renderObject = tester.renderObject(finder);
       if (renderObject is RenderSliver) {
-        return renderObject.geometry.paintExtent;
+        return renderObject.geometry!.paintExtent;
       }
 
       final RenderBox renderBox = renderObject as RenderBox;
@@ -1174,8 +1174,6 @@
         case Axis.vertical:
           return renderBox.size.height;
       }
-      assert(false);
-      return null;
     }
 
     group('animated: $animated, scrollDirection: $axis', () {
@@ -1437,7 +1435,7 @@
   group('RenderViewport getOffsetToReveal renderBox to sliver coordinates conversion', () {
     const EdgeInsets padding = EdgeInsets.fromLTRB(22, 22, 34, 34);
     const Key centerKey = Key('5');
-    Widget buildList({ Axis axis, bool reverse = false, bool reverseGrowth = false }) {
+    Widget buildList({ required Axis axis, bool reverse = false, bool reverseGrowth = false }) {
       return Directionality(
         textDirection: TextDirection.ltr,
         child: Center(
@@ -1613,12 +1611,12 @@
     }
 
     Future<void> expectFlutterError({
-      Widget widget,
-      WidgetTester tester,
-      String message,
+      required Widget widget,
+      required WidgetTester tester,
+      required String message,
     }) async {
       final List<FlutterErrorDetails> errors = <FlutterErrorDetails>[];
-      final FlutterExceptionHandler oldHandler = FlutterError.onError;
+      final FlutterExceptionHandler? oldHandler = FlutterError.onError;
       FlutterError.onError = (FlutterErrorDetails error) => errors.add(error);
       try {
         await tester.pumpWidget(widget);
@@ -1705,13 +1703,12 @@
     final RenderViewport renderViewport = RenderViewport(
       crossAxisDirection: AxisDirection.right, offset: ViewportOffset.zero()
     );
-    FlutterError error;
+    late FlutterError error;
     try {
       renderViewport.computeMinIntrinsicHeight(0);
     } on FlutterError catch (e) {
       error = e;
     }
-    expect(error, isNotNull);
     expect(
       error.toStringDeep(),
       'FlutterError\n'
@@ -1728,7 +1725,6 @@
     final RenderShrinkWrappingViewport renderShrinkWrappingViewport = RenderShrinkWrappingViewport(
       crossAxisDirection: AxisDirection.right, offset: ViewportOffset.zero()
     );
-    error = null;
     try {
       renderShrinkWrappingViewport.computeMinIntrinsicHeight(0);
     } on FlutterError catch (e) {
diff --git a/packages/flutter/test/rendering/wrap_test.dart b/packages/flutter/test/rendering/wrap_test.dart
index 099b4b9..6fbec69 100644
--- a/packages/flutter/test/rendering/wrap_test.dart
+++ b/packages/flutter/test/rendering/wrap_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/flutter/test/semantics/custom_semantics_action_test.dart b/packages/flutter/test/semantics/custom_semantics_action_test.dart
index a581400..e81cbdb 100644
--- a/packages/flutter/test/semantics/custom_semantics_action_test.dart
+++ b/packages/flutter/test/semantics/custom_semantics_action_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/semantics.dart';
 
 import '../flutter_test_alternative.dart';
diff --git a/packages/flutter/test/semantics/semantics_elevation_test.dart b/packages/flutter/test/semantics/semantics_elevation_test.dart
index bd9a562..f0e531d 100644
--- a/packages/flutter/test/semantics/semantics_elevation_test.dart
+++ b/packages/flutter/test/semantics/semantics_elevation_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -236,16 +234,16 @@
 
     // TODO(goderbauer): remove awkward workaround when accessing force-merged
     //   SemanticsData becomes easier, https://github.com/flutter/flutter/issues/25669
-    SemanticsData mergedChildData;
+    SemanticsData? mergedChildData;
     elevation10.visitChildren((SemanticsNode child) {
       expect(mergedChildData, isNull);
       mergedChildData = child.getSemanticsData();
       return true;
     });
 
-    expect(mergedChildData.thickness, 15.0);
-    expect(mergedChildData.elevation, 10.0);
-    expect(mergedChildData.label, 'abs. elevation 25.0\nabs. elevation 15.0');
+    expect(mergedChildData!.thickness, 15.0);
+    expect(mergedChildData!.elevation, 10.0);
+    expect(mergedChildData!.label, 'abs. elevation 25.0\nabs. elevation 15.0');
 
     semantics.dispose();
   });
@@ -291,16 +289,16 @@
 
     // TODO(goderbauer): remove awkward workaround when accessing force-merged
     //   SemanticsData becomes easier, https://github.com/flutter/flutter/issues/25669
-    SemanticsData mergedChildData;
+    SemanticsData? mergedChildData;
     elevation10.visitChildren((SemanticsNode child) {
       expect(mergedChildData, isNull);
       mergedChildData = child.getSemanticsData();
       return true;
     });
 
-    expect(mergedChildData.thickness, 15.0);
-    expect(mergedChildData.elevation, 10.0);
-    expect(mergedChildData.label, 'abs. elevation 15.0\nabs. elevation 25.0');
+    expect(mergedChildData!.thickness, 15.0);
+    expect(mergedChildData!.elevation, 10.0);
+    expect(mergedChildData!.label, 'abs. elevation 15.0\nabs. elevation 25.0');
 
     semantics.dispose();
   });
diff --git a/packages/flutter/test/semantics/semantics_service_test.dart b/packages/flutter/test/semantics/semantics_service_test.dart
index fe90467..ea72876 100644
--- a/packages/flutter/test/semantics/semantics_service_test.dart
+++ b/packages/flutter/test/semantics/semantics_service_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'dart:ui' show TextDirection;
 
 import 'package:flutter/semantics.dart';
@@ -17,11 +15,12 @@
 
   test('Semantic announcement', () async {
     final List<Map<dynamic, dynamic>> log = <Map<dynamic, dynamic>>[];
-
-    SystemChannels.accessibility.setMockMessageHandler((Object mockMessage) async {
+    Future<dynamic> handleMessage(dynamic mockMessage) async {
       final Map<dynamic, dynamic> message = mockMessage as Map<dynamic, dynamic>;
       log.add(message);
-    });
+    }
+
+    SystemChannels.accessibility.setMockMessageHandler(handleMessage);
 
     await SemanticsService.announce('announcement 1', TextDirection.ltr);
     await SemanticsService.announce('announcement 2', TextDirection.rtl);
diff --git a/packages/flutter/test/semantics/semantics_test.dart b/packages/flutter/test/semantics/semantics_test.dart
index f7a9e7d..4b5c150 100644
--- a/packages/flutter/test/semantics/semantics_test.dart
+++ b/packages/flutter/test/semantics/semantics_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/rendering.dart';
 import 'package:flutter/semantics.dart';
 import 'package:vector_math/vector_math_64.dart';
@@ -11,7 +9,6 @@
 
 import '../rendering/rendering_tester.dart';
 
-
 void main() {
   setUp(() {
     debugResetSemanticsIdCounter();
@@ -32,7 +29,7 @@
       expect(node.isTagged(tag1), isTrue);
       expect(node.isTagged(tag2), isFalse);
 
-      node.tags.add(tag2);
+      node.tags!.add(tag2);
       expect(node.isTagged(tag1), isTrue);
       expect(node.isTagged(tag2), isTrue);
     });
@@ -90,7 +87,7 @@
       );
 
       {
-        FlutterError error;
+        late FlutterError error;
         try {
           node.updateWith(
             config: config,
@@ -99,7 +96,6 @@
         } on FlutterError catch (e) {
           error = e;
         }
-        expect(error, isNotNull);
         expect(error.toString(), equalsIgnoringHashCodes(
           'Failed to replace child semantics nodes because the list of `SemanticsNode`s was mutated.\n'
           'Instead of mutating the existing list, create a new list containing the desired `SemanticsNode`s.\n'
@@ -113,7 +109,7 @@
       }
 
       {
-        FlutterError error;
+        late FlutterError error;
         final List<SemanticsNode> modifiedChildren = <SemanticsNode>[
           SemanticsNode()
             ..isMergedIntoParent = true
@@ -140,7 +136,6 @@
         } on FlutterError catch (e) {
           error = e;
         }
-        expect(error, isNotNull);
         expect(error.toStringDeep(), equalsIgnoringHashCodes(
           'FlutterError\n'
           '   Failed to replace child semantics nodes because the list of\n'
@@ -195,7 +190,7 @@
       pumpFrame(phase: EnginePhase.flushSemantics);
 
       int expectedActions = SemanticsAction.tap.index | SemanticsAction.longPress.index | SemanticsAction.scrollLeft.index | SemanticsAction.scrollRight.index;
-      expect(root.debugSemantics.getSemanticsData().actions, expectedActions);
+      expect(root.debugSemantics!.getSemanticsData().actions, expectedActions);
 
       middle
         ..hasScrollLeftAction = false
@@ -205,7 +200,7 @@
       pumpFrame(phase: EnginePhase.flushSemantics);
 
       expectedActions = SemanticsAction.tap.index | SemanticsAction.longPress.index | SemanticsAction.scrollDown.index | SemanticsAction.scrollRight.index;
-      expect(root.debugSemantics.getSemanticsData().actions, expectedActions);
+      expect(root.debugSemantics!.getSemanticsData().actions, expectedActions);
     });
   });
 
@@ -683,8 +678,8 @@
     this.hasScrollRightAction = false,
     this.hasScrollUpAction = false,
     this.hasScrollDownAction = false,
-    this.isSemanticBoundary,
-    RenderBox child,
+    this.isSemanticBoundary = false,
+    RenderBox? child,
   }) : super(child);
 
   bool hasTapAction;
@@ -695,7 +690,6 @@
   bool hasScrollDownAction;
   bool isSemanticBoundary;
 
-
   @override
   void describeSemanticsConfiguration(SemanticsConfiguration config) {
     super.describeSemanticsConfiguration(config);
@@ -717,5 +711,5 @@
 }
 
 class CustomSortKey extends OrdinalSortKey {
-  const CustomSortKey(double order, {String name}) : super(order, name: name);
+  const CustomSortKey(double order, {String? name}) : super(order, name: name);
 }
diff --git a/packages/flutter/test/semantics/semantics_update_test.dart b/packages/flutter/test/semantics/semantics_update_test.dart
index e6a5ae6..fa912e2 100644
--- a/packages/flutter/test/semantics/semantics_update_test.dart
+++ b/packages/flutter/test/semantics/semantics_update_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'dart:typed_data';
 import 'dart:ui' as ui;
 
@@ -48,12 +46,12 @@
     expect(SemanticsUpdateBuilderSpy.observations.length, 2);
 
     expect(SemanticsUpdateBuilderSpy.observations.containsKey(0), isTrue);
-    expect(SemanticsUpdateBuilderSpy.observations[0].childrenInTraversalOrder.length, 1);
-    expect(SemanticsUpdateBuilderSpy.observations[0].childrenInTraversalOrder[0], 1);
+    expect(SemanticsUpdateBuilderSpy.observations[0]!.childrenInTraversalOrder.length, 1);
+    expect(SemanticsUpdateBuilderSpy.observations[0]!.childrenInTraversalOrder[0], 1);
 
     expect(SemanticsUpdateBuilderSpy.observations.containsKey(1), isTrue);
-    expect(SemanticsUpdateBuilderSpy.observations[1].childrenInTraversalOrder.length, 0);
-    expect(SemanticsUpdateBuilderSpy.observations[1].label, 'outer\ninner\ntext');
+    expect(SemanticsUpdateBuilderSpy.observations[1]!.childrenInTraversalOrder.length, 0);
+    expect(SemanticsUpdateBuilderSpy.observations[1]!.label, 'outer\ninner\ntext');
 
     SemanticsUpdateBuilderSpy.observations.clear();
 
@@ -79,8 +77,8 @@
     expect(SemanticsUpdateBuilderSpy.observations.length, 1);
 
     expect(SemanticsUpdateBuilderSpy.observations.containsKey(1), isTrue);
-    expect(SemanticsUpdateBuilderSpy.observations[1].childrenInTraversalOrder.length, 0);
-    expect(SemanticsUpdateBuilderSpy.observations[1].label, 'outer\ninner-updated\ntext');
+    expect(SemanticsUpdateBuilderSpy.observations[1]!.childrenInTraversalOrder.length, 0);
+    expect(SemanticsUpdateBuilderSpy.observations[1]!.label, 'outer\ninner-updated\ntext');
 
     SemanticsUpdateBuilderSpy.observations.clear();
     handle.dispose();
@@ -99,32 +97,32 @@
 
   @override
   void updateNode({
-    @required int id,
-    @required int flags,
-    @required int actions,
-    @required int maxValueLength,
-    @required int currentValueLength,
-    @required int textSelectionBase,
-    @required int textSelectionExtent,
-    @required int platformViewId,
-    @required int scrollChildren,
-    @required int scrollIndex,
-    @required double scrollPosition,
-    @required double scrollExtentMax,
-    @required double scrollExtentMin,
-    @required double elevation,
-    @required double thickness,
-    @required Rect rect,
-    @required String label,
-    @required String hint,
-    @required String value,
-    @required String increasedValue,
-    @required String decreasedValue,
-    TextDirection textDirection,
-    @required Float64List transform,
-    @required Int32List childrenInTraversalOrder,
-    @required Int32List childrenInHitTestOrder,
-    @required Int32List additionalActions,
+    required int id,
+    required int flags,
+    required int actions,
+    required int maxValueLength,
+    required int currentValueLength,
+    required int textSelectionBase,
+    required int textSelectionExtent,
+    required int platformViewId,
+    required int scrollChildren,
+    required int scrollIndex,
+    required double scrollPosition,
+    required double scrollExtentMax,
+    required double scrollExtentMin,
+    required double elevation,
+    required double thickness,
+    required Rect rect,
+    required String label,
+    required String hint,
+    required String value,
+    required String increasedValue,
+    required String decreasedValue,
+    TextDirection? textDirection,
+    required Float64List transform,
+    required Int32List childrenInTraversalOrder,
+    required Int32List childrenInHitTestOrder,
+    required Int32List additionalActions,
   }) {
     // Makes sure we don't send the same id twice.
     assert(!observations.containsKey(id));
@@ -161,32 +159,32 @@
 
 class SemanticsNodeUpdateObservation {
   const SemanticsNodeUpdateObservation({
-    @required this.id,
-    @required this.flags,
-    @required this.actions,
-    @required this.maxValueLength,
-    @required this.currentValueLength,
-    @required this.textSelectionBase,
-    @required this.textSelectionExtent,
-    @required this.platformViewId,
-    @required this.scrollChildren,
-    @required this.scrollIndex,
-    @required this.scrollPosition,
-    @required this.scrollExtentMax,
-    @required this.scrollExtentMin,
-    @required this.elevation,
-    @required this.thickness,
-    @required this.rect,
-    @required this.label,
-    @required this.hint,
-    @required this.value,
-    @required this.increasedValue,
-    @required this.decreasedValue,
+    required this.id,
+    required this.flags,
+    required this.actions,
+    required this.maxValueLength,
+    required this.currentValueLength,
+    required this.textSelectionBase,
+    required this.textSelectionExtent,
+    required this.platformViewId,
+    required this.scrollChildren,
+    required this.scrollIndex,
+    required this.scrollPosition,
+    required this.scrollExtentMax,
+    required this.scrollExtentMin,
+    required this.elevation,
+    required this.thickness,
+    required this.rect,
+    required this.label,
+    required this.hint,
+    required this.value,
+    required this.increasedValue,
+    required this.decreasedValue,
     this.textDirection,
-    @required this.transform,
-    @required this.childrenInTraversalOrder,
-    @required this.childrenInHitTestOrder,
-    @required this.additionalActions,
+    required this.transform,
+    required this.childrenInTraversalOrder,
+    required this.childrenInHitTestOrder,
+    required this.additionalActions,
   });
 
   final int id;
@@ -210,7 +208,7 @@
   final String value;
   final String increasedValue;
   final String decreasedValue;
-  final TextDirection textDirection;
+  final TextDirection? textDirection;
   final Float64List transform;
   final Int32List childrenInTraversalOrder;
   final Int32List childrenInHitTestOrder;
diff --git a/packages/flutter/test/semantics/traversal_order_test.dart b/packages/flutter/test/semantics/traversal_order_test.dart
index e67797f..7b22a2c 100644
--- a/packages/flutter/test/semantics/traversal_order_test.dart
+++ b/packages/flutter/test/semantics/traversal_order_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/flutter/test/widgets/absorb_pointer_test.dart b/packages/flutter/test/widgets/absorb_pointer_test.dart
index 5cfd716..84e9f22 100644
--- a/packages/flutter/test/widgets/absorb_pointer_test.dart
+++ b/packages/flutter/test/widgets/absorb_pointer_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/widgets.dart';
 
diff --git a/packages/flutter/test/widgets/actions_test.dart b/packages/flutter/test/widgets/actions_test.dart
index 8e9b647..5c239f0 100644
--- a/packages/flutter/test/widgets/actions_test.dart
+++ b/packages/flutter/test/widgets/actions_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/foundation.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
@@ -28,7 +26,7 @@
 
 class TestAction extends CallbackAction<TestIntent> {
   TestAction({
-    @required OnInvokeCallback onInvoke,
+    required OnInvokeCallback onInvoke,
   })  : assert(onInvoke != null),
         super(onInvoke: onInvoke);
 
@@ -64,23 +62,23 @@
 class TestDispatcher extends ActionDispatcher {
   const TestDispatcher({this.postInvoke});
 
-  final PostInvokeCallback postInvoke;
+  final PostInvokeCallback? postInvoke;
 
   @override
-  Object invokeAction(Action<Intent> action, Intent intent, [BuildContext context]) {
-    final Object result = super.invokeAction(action, intent, context);
+  Object? invokeAction(Action<Intent> action, Intent intent, [BuildContext? context]) {
+    final Object? result = super.invokeAction(action, intent, context);
     postInvoke?.call(action: action, intent: intent, dispatcher: this);
     return result;
   }
 }
 
 class TestDispatcher1 extends TestDispatcher {
-  const TestDispatcher1({PostInvokeCallback postInvoke}) : super(postInvoke: postInvoke);
+  const TestDispatcher1({PostInvokeCallback? postInvoke}) : super(postInvoke: postInvoke);
 }
 
 void main() {
   testWidgets('CallbackAction passes correct intent when invoked.', (WidgetTester tester) async {
-    Intent passedIntent;
+    late Intent passedIntent;
     final TestAction action = TestAction(onInvoke: (Intent intent) {
       passedIntent = intent;
       return true;
@@ -94,7 +92,7 @@
       await tester.pumpWidget(Container());
       bool invoked = false;
       const ActionDispatcher dispatcher = ActionDispatcher();
-      final Object result = dispatcher.invokeAction(
+      final Object? result = dispatcher.invokeAction(
         TestAction(
           onInvoke: (Intent intent) {
             invoked = true;
@@ -108,11 +106,11 @@
     });
   });
   group(Actions, () {
-    Intent invokedIntent;
-    Action<Intent> invokedAction;
-    ActionDispatcher invokedDispatcher;
+    Intent? invokedIntent;
+    Action<Intent>? invokedAction;
+    ActionDispatcher? invokedDispatcher;
 
-    void collect({Action<Intent> action, Intent intent, ActionDispatcher dispatcher}) {
+    void collect({Action<Intent>? action, Intent? intent, ActionDispatcher? dispatcher}) {
       invokedIntent = intent;
       invokedAction = action;
       invokedDispatcher = dispatcher;
@@ -145,8 +143,8 @@
       );
 
       await tester.pump();
-      final Object result = Actions.invoke(
-        containerKey.currentContext,
+      final Object? result = Actions.invoke(
+        containerKey.currentContext!,
         const TestIntent(),
       );
       expect(result, isTrue);
@@ -174,8 +172,8 @@
       );
 
       await tester.pump();
-      final Object result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+      final Object? result = Actions.invoke<TestIntent>(
+        containerKey.currentContext!,
         intent,
       );
       expect(result, isTrue);
@@ -208,8 +206,8 @@
       );
 
       await tester.pump();
-      final Object result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+      final Object? result = Actions.invoke<TestIntent>(
+        containerKey.currentContext!,
         intent,
       );
       expect(result, isTrue);
@@ -243,8 +241,8 @@
       );
 
       await tester.pump();
-      final Object result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+      final Object? result = Actions.invoke<TestIntent>(
+        containerKey.currentContext!,
         intent,
       );
       expect(result, isTrue);
@@ -267,7 +265,7 @@
 
       await tester.pump();
       final ActionDispatcher dispatcher = Actions.of(
-        containerKey.currentContext,
+        containerKey.currentContext!,
         nullOk: true,
       );
       expect(dispatcher, equals(testDispatcher));
@@ -296,9 +294,9 @@
       );
 
       await tester.pump();
-      expect(Actions.find<TestIntent>(containerKey.currentContext), equals(testAction));
-      expect(() => Actions.find<DoNothingIntent>(containerKey.currentContext), throwsAssertionError);
-      expect(Actions.find<DoNothingIntent>(containerKey.currentContext, nullOk: true), isNull);
+      expect(Actions.find<TestIntent>(containerKey.currentContext!), equals(testAction));
+      expect(() => Actions.find<DoNothingIntent>(containerKey.currentContext!), throwsAssertionError);
+      expect(Actions.find<DoNothingIntent>(containerKey.currentContext!, nullOk: true), isNull);
 
       await tester.pumpWidget(
         Actions(
@@ -316,9 +314,9 @@
       );
 
       await tester.pump();
-      expect(Actions.find<TestIntent>(containerKey.currentContext), equals(testAction));
-      expect(() => Actions.find<DoNothingIntent>(containerKey.currentContext), throwsAssertionError);
-      expect(Actions.find<DoNothingIntent>(containerKey.currentContext, nullOk: true), isNull);
+      expect(Actions.find<TestIntent>(containerKey.currentContext!), equals(testAction));
+      expect(() => Actions.find<DoNothingIntent>(containerKey.currentContext!), throwsAssertionError);
+      expect(Actions.find<DoNothingIntent>(containerKey.currentContext!, nullOk: true), isNull);
     });
     testWidgets('FocusableActionDetector keeps track of focus and hover even when disabled.', (WidgetTester tester) async {
       FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
@@ -407,7 +405,7 @@
       addTearDown(gesture.removePointer);
       await tester.pump();
 
-      expect(RendererBinding.instance.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.text);
+      expect(RendererBinding.instance!.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.text);
 
       // Test default
       await tester.pumpWidget(
@@ -421,7 +419,7 @@
         ),
       );
 
-      expect(RendererBinding.instance.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.forbidden);
+      expect(RendererBinding.instance!.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.forbidden);
     });
     testWidgets('Actions.invoke returns the value of Action.invoke', (WidgetTester tester) async {
       final GlobalKey containerKey = GlobalKey();
@@ -446,8 +444,8 @@
       );
 
       await tester.pump();
-      final Object result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+      final Object? result = Actions.invoke<TestIntent>(
+        containerKey.currentContext!,
         intent,
       );
       expect(identical(result, sentinel), isTrue);
@@ -509,8 +507,8 @@
         ),
       );
 
-      Object result = Actions.invoke(
-        containerKey.currentContext,
+      Object? result = Actions.invoke(
+        containerKey.currentContext!,
         const TestIntent(),
       );
       expect(enabled1, isFalse);
@@ -519,14 +517,14 @@
 
       action1.enabled = true;
       result = Actions.invoke(
-        containerKey.currentContext,
+        containerKey.currentContext!,
         const TestIntent(),
       );
       expect(enabled1, isTrue);
       expect(result, isTrue);
       expect(invoked1, isTrue);
 
-      bool enabledChanged;
+      bool? enabledChanged;
       await tester.pumpWidget(
         Actions(
           actions: <Type, Action<Intent>>{
@@ -548,7 +546,7 @@
 
       await tester.pump();
       result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+        containerKey.currentContext!,
         const SecondTestIntent(),
       );
       expect(enabledChanged, isNull);
@@ -559,7 +557,7 @@
       action2.enabled = true;
       expect(enabledChanged, isTrue);
       result = Actions.invoke<TestIntent>(
-        containerKey.currentContext,
+        containerKey.currentContext!,
         const SecondTestIntent(),
       );
       expect(enabled2, isTrue);
@@ -622,18 +620,18 @@
 
   group(FocusableActionDetector, () {
     const Intent intent = TestIntent();
-    bool invoked;
-    bool hovering;
-    bool focusing;
-    FocusNode focusNode;
-    Action<Intent> testAction;
+    late bool invoked;
+    late bool hovering;
+    late bool focusing;
+    late FocusNode focusNode;
+    late Action<Intent> testAction;
 
     Future<void> pumpTest(
         WidgetTester tester, {
           bool enabled = true,
           bool directional = false,
           bool supplyCallbacks = true,
-          @required Key key,
+          required Key key,
         }) async {
       await tester.pumpWidget(
         MediaQuery(
diff --git a/packages/flutter/test/widgets/align_test.dart b/packages/flutter/test/widgets/align_test.dart
index c164d25..66ddbbc 100644
--- a/packages/flutter/test/widgets/align_test.dart
+++ b/packages/flutter/test/widgets/align_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -26,20 +24,17 @@
 
     await tester.pumpWidget(
       const Align(
-        key: GlobalObjectKey<State<StatefulWidget>>(null),
         alignment: Alignment.topLeft,
       ),
     );
     await tester.pumpWidget(const Directionality(
       textDirection: TextDirection.rtl,
       child: Align(
-        key: GlobalObjectKey<State<StatefulWidget>>(null),
         alignment: AlignmentDirectional.topStart,
       ),
     ));
     await tester.pumpWidget(
       const Align(
-        key: GlobalObjectKey<State<StatefulWidget>>(null),
         alignment: Alignment.topLeft,
       ),
     );
@@ -108,7 +103,7 @@
       ),
     );
 
-    final Size size = alignKey.currentContext.size;
+    final Size size = alignKey.currentContext!.size!;
     expect(size.width, equals(800.0));
     expect(size.height, equals(10.0));
   });
diff --git a/packages/flutter/test/widgets/animated_align_test.dart b/packages/flutter/test/widgets/animated_align_test.dart
index 82e1b5a..0b3e52e 100644
--- a/packages/flutter/test/widgets/animated_align_test.dart
+++ b/packages/flutter/test/widgets/animated_align_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
diff --git a/packages/flutter/test/widgets/animated_container_test.dart b/packages/flutter/test/widgets/animated_container_test.dart
index 4d06ca5..8a427d9 100644
--- a/packages/flutter/test/widgets/animated_container_test.dart
+++ b/packages/flutter/test/widgets/animated_container_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -47,7 +45,7 @@
       ),
     );
 
-    final RenderDecoratedBox box = key.currentContext.findRenderObject() as RenderDecoratedBox;
+    final RenderDecoratedBox box = key.currentContext!.findRenderObject() as RenderDecoratedBox;
     actualDecoration = box.decoration as BoxDecoration;
     expect(actualDecoration.color, equals(decorationA.color));
 
@@ -59,7 +57,7 @@
       ),
     );
 
-    expect(key.currentContext.findRenderObject(), equals(box));
+    expect(key.currentContext!.findRenderObject(), equals(box));
     actualDecoration = box.decoration as BoxDecoration;
     expect(actualDecoration.color, equals(decorationA.color));
 
diff --git a/packages/flutter/test/widgets/animated_cross_fade_test.dart b/packages/flutter/test/widgets/animated_cross_fade_test.dart
index a1a379b..98410eb 100644
--- a/packages/flutter/test/widgets/animated_cross_fade_test.dart
+++ b/packages/flutter/test/widgets/animated_cross_fade_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/scheduler.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
@@ -373,7 +371,7 @@
 }
 
 class _TickerWatchingWidgetState extends State<_TickerWatchingWidget> with SingleTickerProviderStateMixin {
-  Ticker ticker;
+  late Ticker ticker;
 
   @override
   void initState() {
diff --git a/packages/flutter/test/widgets/animated_list_test.dart b/packages/flutter/test/widgets/animated_list_test.dart
index 0cab220..166ae07 100644
--- a/packages/flutter/test/widgets/animated_list_test.dart
+++ b/packages/flutter/test/widgets/animated_list_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/src/foundation/diagnostics.dart';
 import 'package:flutter/widgets.dart';
@@ -37,11 +35,11 @@
          && widget.itemBuilder == builder;
     }), findsOneWidget);
 
-    listKey.currentState.insertItem(0);
+    listKey.currentState!.insertItem(0);
     await tester.pump();
     expect(find.text('item 2'), findsOneWidget);
 
-    listKey.currentState.removeItem(
+    listKey.currentState!.removeItem(
       2,
       (BuildContext context, Animation<double> animation) {
         return const SizedBox(
@@ -90,8 +88,8 @@
       expect(find.text('item 1'), findsOneWidget);
       expect(animations.containsKey(0), true);
       expect(animations.containsKey(1), true);
-      expect(animations[0].value, 1.0);
-      expect(animations[1].value, 1.0);
+      expect(animations[0]!.value, 1.0);
+      expect(animations[1]!.value, 1.0);
     });
 
     testWidgets('insert', (WidgetTester tester) async {
@@ -125,7 +123,7 @@
       double itemTop(int index) => tester.getTopLeft(find.byKey(ValueKey<int>(index), skipOffstage: false)).dy;
       double itemBottom(int index) => tester.getBottomLeft(find.byKey(ValueKey<int>(index), skipOffstage: false)).dy;
 
-      listKey.currentState.insertItem(
+      listKey.currentState!.insertItem(
         0,
         duration: const Duration(milliseconds: 100),
       );
@@ -143,11 +141,11 @@
       expect(itemTop(0), 0.0);
       expect(itemBottom(0), 100.0);
 
-      listKey.currentState.insertItem(
+      listKey.currentState!.insertItem(
         0,
         duration: const Duration(milliseconds: 100),
       );
-      listKey.currentState.insertItem(
+      listKey.currentState!.insertItem(
         0,
         duration: const Duration(milliseconds: 100),
       );
@@ -223,7 +221,7 @@
       expect(find.text('item 2'), findsOneWidget);
 
       items.removeAt(0);
-      listKey.currentState.removeItem(
+      listKey.currentState!.removeItem(
         0,
         (BuildContext context, Animation<double> animation) => buildItem(context, 0, animation),
         duration: const Duration(milliseconds: 100),
@@ -289,11 +287,11 @@
       expect(tester.getTopLeft(find.text('item 0')).dy, 200);
       expect(tester.getTopLeft(find.text('item 1')).dy, 300);
 
-      listKey.currentState.insertItem(3);
+      listKey.currentState!.insertItem(3);
       await tester.pumpAndSettle();
       expect(tester.getTopLeft(find.text('item 3')).dy, 500);
 
-      listKey.currentState.removeItem(0,
+      listKey.currentState!.removeItem(0,
         (BuildContext context, Animation<double> animation) {
           return SizeTransition(
             sizeFactor: animation,
@@ -327,13 +325,12 @@
     (WidgetTester tester) async {
     final GlobalKey key = GlobalKey();
     await tester.pumpWidget(Container(key: key));
-    FlutterError error;
+    late FlutterError error;
     try {
-      AnimatedList.of(key.currentContext);
+      AnimatedList.of(key.currentContext!);
     } on FlutterError catch (e) {
       error = e;
     }
-    expect(error, isNotNull);
     expect(error.diagnostics.length, 4);
     expect(error.diagnostics[2].level, DiagnosticLevel.hint);
     expect(
diff --git a/packages/flutter/test/widgets/animated_padding_test.dart b/packages/flutter/test/widgets/animated_padding_test.dart
index 88722e1..90ba6f2 100644
--- a/packages/flutter/test/widgets/animated_padding_test.dart
+++ b/packages/flutter/test/widgets/animated_padding_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
diff --git a/packages/flutter/test/widgets/animated_positioned_test.dart b/packages/flutter/test/widgets/animated_positioned_test.dart
index 411fd44..a6f9ae1 100644
--- a/packages/flutter/test/widgets/animated_positioned_test.dart
+++ b/packages/flutter/test/widgets/animated_positioned_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -44,12 +42,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pumpWidget(
@@ -71,17 +69,17 @@
     const Offset first = Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0);
     const Offset last = Offset(37.0 + 59.0 / 2.0, 31.0 + 71.0 / 2.0);
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(first));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(Offset.lerp(first, last, 0.5)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(last));
 
     expect(box, hasAGoodToStringDeep);
@@ -128,12 +126,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pumpWidget(
@@ -157,17 +155,17 @@
     const Offset first = Offset(50.0 + 70.0 / 2.0, 30.0 + 110.0 / 2.0);
     const Offset last = Offset(37.0 + 59.0 / 2.0, 31.0 + 71.0 / 2.0);
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(first));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(Offset.lerp(first, last, 0.5)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(last));
 
     expect(box, hasAGoodToStringDeep);
@@ -214,12 +212,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(800.0 - 50.0 - 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(800.0 - 50.0 - 70.0 / 2.0, 30.0 + 110.0 / 2.0)));
 
     await tester.pumpWidget(
@@ -243,17 +241,17 @@
     const Offset first = Offset(800.0 - 50.0 - 70.0 / 2.0, 30.0 + 110.0 / 2.0);
     const Offset last = Offset(800.0 - 37.0 - 59.0 / 2.0, 31.0 + 71.0 / 2.0);
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(first));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(Offset.lerp(first, last, 0.5)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(last));
 
     expect(box, hasAGoodToStringDeep);
@@ -298,12 +296,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pumpWidget(
@@ -322,12 +320,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(100.0, 100.0)));
 
     await tester.pumpWidget(
@@ -346,17 +344,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(100.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(150.0, 150.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0)));
   });
 
@@ -381,12 +379,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pumpWidget(
@@ -405,17 +403,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0)));
   });
 
@@ -442,12 +440,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pumpWidget(
@@ -468,12 +466,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(100.0, 100.0)));
 
     await tester.pumpWidget(
@@ -494,17 +492,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(100.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(150.0, 150.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0)));
   });
 
@@ -531,12 +529,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(50.0, 50.0)));
 
     await tester.pumpWidget(
@@ -557,17 +555,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0)));
   });
 
@@ -594,12 +592,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(750.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(750.0, 50.0)));
 
     await tester.pumpWidget(
@@ -620,12 +618,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(750.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(700.0, 100.0)));
 
     await tester.pumpWidget(
@@ -646,17 +644,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(700.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(650.0, 150.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(600.0, 200.0)));
   });
 
@@ -683,12 +681,12 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(750.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(750.0, 50.0)));
 
     await tester.pumpWidget(
@@ -709,17 +707,17 @@
       ),
     );
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(450.0, 50.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(450.0, 100.0)));
 
     await tester.pump(const Duration(seconds: 1));
 
-    box = key.currentContext.findRenderObject() as RenderBox;
+    box = key.currentContext!.findRenderObject() as RenderBox;
     expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(450.0, 150.0)));
   });
 
diff --git a/packages/flutter/test/widgets/animated_size_test.dart b/packages/flutter/test/widgets/animated_size_test.dart
index 17a2879..356cf0d 100644
--- a/packages/flutter/test/widgets/animated_size_test.dart
+++ b/packages/flutter/test/widgets/animated_size_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -144,7 +142,7 @@
         await tester.pump(Duration(milliseconds: millis));
       }
 
-      void verify({ double size, RenderAnimatedSizeState state }) {
+      void verify({ double? size, RenderAnimatedSizeState? state }) {
         assert(size != null || state != null);
         final RenderAnimatedSize box = tester.renderObject(find.byType(AnimatedSize));
         if (size != null) {
diff --git a/packages/flutter/test/widgets/animated_switcher_test.dart b/packages/flutter/test/widgets/animated_switcher_test.dart
index f26d504..ff16785 100644
--- a/packages/flutter/test/widgets/animated_switcher_test.dart
+++ b/packages/flutter/test/widgets/animated_switcher_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 
@@ -211,9 +209,12 @@
   });
 
   testWidgets('AnimatedSwitcher uses custom layout.', (WidgetTester tester) async {
-    Widget newLayoutBuilder(Widget currentChild, List<Widget> previousChildren) {
+    Widget newLayoutBuilder(Widget? currentChild, List<Widget> previousChildren) {
       return Column(
-        children: previousChildren + <Widget>[currentChild],
+        children: <Widget>[
+          ...previousChildren,
+          if (currentChild != null) currentChild,
+        ],
       );
     }
 
@@ -230,16 +231,13 @@
   });
 
   testWidgets('AnimatedSwitcher uses custom transitions.', (WidgetTester tester) async {
-    final List<Widget> foundChildren = <Widget>[];
-    Widget newLayoutBuilder(Widget currentChild, List<Widget> previousChildren) {
-      foundChildren.clear();
-      if (currentChild != null) {
-        foundChildren.add(currentChild);
-      }
-      foundChildren.addAll(previousChildren);
-      return Column(
-        children: foundChildren,
-      );
+    late List<Widget> foundChildren;
+    Widget newLayoutBuilder(Widget? currentChild, List<Widget> previousChildren) {
+      foundChildren = <Widget>[
+        if (currentChild != null) currentChild,
+        ...previousChildren,
+      ];
+      return Column(children: foundChildren);
     }
 
     Widget newTransitionBuilder(Widget child, Animation<double> animation) {
@@ -381,16 +379,13 @@
     final UniqueKey containerTwo = UniqueKey();
     final UniqueKey containerThree = UniqueKey();
 
-    final List<Widget> foundChildren = <Widget>[];
-    Widget newLayoutBuilder(Widget currentChild, List<Widget> previousChildren) {
-      foundChildren.clear();
-      if (currentChild != null) {
-        foundChildren.add(currentChild);
-      }
-      foundChildren.addAll(previousChildren);
-      return Column(
-        children: foundChildren,
-      );
+    late List<Widget> foundChildren;
+    Widget newLayoutBuilder(Widget? currentChild, List<Widget> previousChildren) {
+      foundChildren = <Widget>[
+        if (currentChild != null) currentChild,
+        ...previousChildren,
+      ];
+      return Column(children: foundChildren);
     }
 
     // Insert three unique children so that we have some previous children.
@@ -472,7 +467,7 @@
 }
 
 class StatefulTest extends StatefulWidget {
-  const StatefulTest({Key key}) : super(key: key);
+  const StatefulTest({Key? key}) : super(key: key);
 
   @override
   StatefulTestState createState() => StatefulTestState();
diff --git a/packages/flutter/test/widgets/annotated_region_test.dart b/packages/flutter/test/widgets/annotated_region_test.dart
index a5ab56f..d6cf140 100644
--- a/packages/flutter/test/widgets/annotated_region_test.dart
+++ b/packages/flutter/test/widgets/annotated_region_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'dart:ui' show window;
 
 import 'package:flutter/rendering.dart';
@@ -32,12 +30,12 @@
         ),
       ),
     );
-    int result = RendererBinding.instance.renderView.debugLayer.find<int>(Offset(
+    int? result = RendererBinding.instance!.renderView.debugLayer!.find<int>(Offset(
       10.0 * window.devicePixelRatio,
       10.0 * window.devicePixelRatio,
     ));
     expect(result, null);
-    result = RendererBinding.instance.renderView.debugLayer.find<int>(Offset(
+    result = RendererBinding.instance!.renderView.debugLayer!.find<int>(Offset(
       50.0 * window.devicePixelRatio,
       50.0 * window.devicePixelRatio,
     ));
diff --git a/packages/flutter/test/widgets/app_navigator_key_test.dart b/packages/flutter/test/widgets/app_navigator_key_test.dart
index 8ab9931..cb4a10f 100644
--- a/packages/flutter/test/widgets/app_navigator_key_test.dart
+++ b/packages/flutter/test/widgets/app_navigator_key_test.dart
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// @dart = 2.8
-
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/widgets.dart';