Unverified Commit 46d1b7d8 authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

[NNBD] Migrate some Widgets tests (#68034)

parent 9e70180f
......@@ -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:async';
import 'package:flutter/widgets.dart';
......@@ -342,7 +340,7 @@ Future<void> eventFiring(WidgetTester tester) async {
}
class StringCollector extends StreamBuilderBase<String, List<String>> {
const StringCollector({ Key key, Stream<String> stream }) : super(key: key, stream: stream);
const StringCollector({ Key? key, Stream<String>? stream }) : super(key: key, stream: stream);
@override
List<String> initial() => <String>[];
......
......@@ -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/services.dart';
import 'package:flutter_test/flutter_test.dart';
......@@ -57,7 +55,7 @@ void main() {
const TextField client1 = TextField(autofillHints: <String>['1']);
TextField client2 = const TextField(autofillHints: <String>[]);
StateSetter setState;
late StateSetter setState;
await tester.pumpWidget(
MaterialApp(
......@@ -170,7 +168,7 @@ void main() {
});
testWidgets('disposing AutofillGroups', (WidgetTester tester) async {
StateSetter setState;
late StateSetter setState;
const Key group1 = Key('group1');
const Key group2 = Key('group2');
const Key group3 = Key('group3');
......
......@@ -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';
import 'package:flutter/widgets.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/material.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/material.dart';
......@@ -116,7 +114,7 @@ void main() {
}
class BaselineDetector extends LeafRenderObjectWidget {
const BaselineDetector(this.callback, { Key key }) : super(key: key);
const BaselineDetector(this.callback, { Key? key }) : super(key: key);
final VoidCallback callback;
......
......@@ -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/gestures.dart';
import 'package:flutter_test/flutter_test.dart';
......@@ -347,8 +345,8 @@ void main() {
});
group('ColoredBox', () {
_MockCanvas mockCanvas;
_MockPaintingContext mockContext;
late _MockCanvas mockCanvas;
late _MockPaintingContext mockContext;
const Color colorToPaint = Color(0xFFABCDEF);
setUp(() {
......@@ -456,7 +454,7 @@ void main() {
testWidgets('IgnorePointer ignores pointers', (WidgetTester tester) async {
final List<String> logs = <String>[];
Widget target({bool ignoring}) => Align(
Widget target({required bool ignoring}) => Align(
alignment: Alignment.topLeft,
child: Directionality(
textDirection: TextDirection.ltr,
......@@ -534,7 +532,7 @@ void main() {
testWidgets('AbsorbPointer absorbs pointers', (WidgetTester tester) async {
final List<String> logs = <String>[];
Widget target({bool absorbing}) => Align(
Widget target({required bool absorbing}) => Align(
alignment: Alignment.topLeft,
child: Directionality(
textDirection: TextDirection.ltr,
......
......@@ -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 'package:flutter/scheduler.dart';
......@@ -14,12 +12,12 @@ import 'package:flutter/widgets.dart';
void main() {
test('attachRootWidget will schedule a frame', () async {
final WidgetsFlutterBinding binding = WidgetsFlutterBinding.ensureInitialized() as WidgetsFlutterBinding;
expect(SchedulerBinding.instance.hasScheduledFrame, isFalse);
expect(SchedulerBinding.instance!.hasScheduledFrame, isFalse);
// Framework starts with detached statue. Sends resumed signal to enable frame.
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed');
await ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed')!;
await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
binding.attachRootWidget(const Placeholder());
expect(SchedulerBinding.instance.hasScheduledFrame, isTrue);
expect(SchedulerBinding.instance!.hasScheduledFrame, isTrue);
});
}
......@@ -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 'package:flutter/scheduler.dart';
......@@ -14,22 +12,22 @@ import 'package:flutter/widgets.dart';
void main() {
test('Can only schedule frames after widget binding attaches the root widget', () async {
final WidgetsBinding binding = WidgetsFlutterBinding.ensureInitialized();
expect(SchedulerBinding.instance.framesEnabled, isFalse);
expect(SchedulerBinding.instance.hasScheduledFrame, isFalse);
expect(SchedulerBinding.instance!.framesEnabled, isFalse);
expect(SchedulerBinding.instance!.hasScheduledFrame, isFalse);
// Sends a message to notify that the engine is ready to accept frames.
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed');
await ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed')!;
await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
// Enables the semantics should not schedule any frames if the root widget
// has not been attached.
binding.setSemanticsEnabled(true);
expect(SchedulerBinding.instance.framesEnabled, isFalse);
expect(SchedulerBinding.instance.hasScheduledFrame, isFalse);
expect(SchedulerBinding.instance!.framesEnabled, isFalse);
expect(SchedulerBinding.instance!.hasScheduledFrame, isFalse);
// The widget binding should be ready to produce frames after it attaches
// the root widget.
binding.attachRootWidget(const Placeholder());
expect(SchedulerBinding.instance.framesEnabled, isTrue);
expect(SchedulerBinding.instance.hasScheduledFrame, isTrue);
expect(SchedulerBinding.instance!.framesEnabled, isTrue);
expect(SchedulerBinding.instance!.hasScheduledFrame, isTrue);
});
}
......@@ -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:async';
import 'package:flutter/rendering.dart';
......@@ -16,7 +14,7 @@ const String _loading = 'Loading...';
void main() {
testWidgets('deferFirstFrame/allowFirstFrame stops sending frames to engine', (WidgetTester tester) async {
expect(RendererBinding.instance.sendFramesToEngine, isTrue);
expect(RendererBinding.instance!.sendFramesToEngine, isTrue);
final Completer<void> completer = Completer<void>();
await tester.pumpWidget(
......@@ -32,28 +30,28 @@ void main() {
expect(find.text(_loading), findsOneWidget);
expect(find.text(_actualContent), findsNothing);
expect(RendererBinding.instance.sendFramesToEngine, isFalse);
expect(RendererBinding.instance!.sendFramesToEngine, isFalse);
await tester.pump();
expect(find.text(_loading), findsOneWidget);
expect(find.text(_actualContent), findsNothing);
expect(RendererBinding.instance.sendFramesToEngine, isFalse);
expect(RendererBinding.instance!.sendFramesToEngine, isFalse);
expect(state.doneLoading, isFalse);
// Complete the future to start sending frames.
completer.complete();
await tester.idle();
expect(state.doneLoading, isTrue);
expect(RendererBinding.instance.sendFramesToEngine, isTrue);
expect(RendererBinding.instance!.sendFramesToEngine, isTrue);
await tester.pump();
expect(find.text(_loading), findsNothing);
expect(find.text(_actualContent), findsOneWidget);
expect(RendererBinding.instance.sendFramesToEngine, isTrue);
expect(RendererBinding.instance!.sendFramesToEngine, isTrue);
});
testWidgets('Two widgets can defer frames', (WidgetTester tester) async {
expect(RendererBinding.instance.sendFramesToEngine, isTrue);
expect(RendererBinding.instance!.sendFramesToEngine, isTrue);
final Completer<void> completer1 = Completer<void>();
final Completer<void> completer2 = Completer<void>();
......@@ -76,7 +74,7 @@ void main() {
);
expect(find.text(_loading), findsNWidgets(2));
expect(find.text(_actualContent), findsNothing);
expect(RendererBinding.instance.sendFramesToEngine, isFalse);
expect(RendererBinding.instance!.sendFramesToEngine, isFalse);
completer1.complete();
completer2.complete();
......@@ -85,12 +83,12 @@ void main() {
await tester.pump();
expect(find.text(_loading), findsNothing);
expect(find.text(_actualContent), findsNWidgets(2));
expect(RendererBinding.instance.sendFramesToEngine, isTrue);
expect(RendererBinding.instance!.sendFramesToEngine, isTrue);
});
}
class _DeferringWidget extends StatefulWidget {
const _DeferringWidget({Key key, this.loader}) : super(key: key);
const _DeferringWidget({required Key key, required this.loader}) : super(key: key);
final Future<void> loader;
......@@ -104,11 +102,11 @@ class _DeferringWidgetState extends State<_DeferringWidget> {
@override
void initState() {
super.initState();
RendererBinding.instance.deferFirstFrame();
RendererBinding.instance!.deferFirstFrame();
widget.loader.then((_) {
setState(() {
doneLoading = true;
RendererBinding.instance.allowFirstFrame();
RendererBinding.instance!.allowFirstFrame();
});
});
}
......
......@@ -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';
import 'package:flutter/material.dart';
......@@ -21,14 +19,14 @@ void main() {
// Simulates the engine completing a frame render to trigger the
// appropriate callback setting [WidgetBinding.firstFrameRasterized].
binding.window.onReportTimings(<FrameTiming>[]);
binding.window.onReportTimings!(<FrameTiming>[]);
expect(binding.firstFrameRasterized, isFalse);
binding.allowFirstFrame();
fakeAsync.flushTimers();
// Simulates the engine again.
binding.window.onReportTimings(<FrameTiming>[]);
binding.window.onReportTimings!(<FrameTiming>[]);
expect(binding.firstFrameRasterized, isTrue);
});
});
......
......@@ -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' show window;
......@@ -27,8 +25,8 @@ void main() {
expect(window.onDrawFrame, isNull);
// Framework starts with detached statue. Sends resumed signal to enable frame.
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed');
await ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed')!;
await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
// A frame can only be scheduled when there is a root widget.
binding.attachRootWidget(const Placeholder());
......
......@@ -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:async';
import 'dart:math' as math;
import 'dart:typed_data';
......@@ -23,7 +21,7 @@ class TestImageProvider extends ImageProvider<TestImageProvider> {
final Future<void> future;
static ui.Image image;
static late ui.Image image;
@override
Future<TestImageProvider> obtainKey(ImageConfiguration configuration) {
......@@ -270,7 +268,7 @@ Future<void> main() async {
testWidgets('Can hit test on BoxDecoration', (WidgetTester tester) async {
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
......@@ -307,7 +305,7 @@ Future<void> main() async {
testWidgets('Can hit test on BoxDecoration circle', (WidgetTester tester) async {
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
......@@ -346,7 +344,7 @@ Future<void> main() async {
});
testWidgets('Can hit test on BoxDecoration border', (WidgetTester tester) async {
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
itemsTapped = <int>[];
......@@ -388,7 +386,7 @@ Future<void> main() async {
const double width = 50.0;
const double radius = 12.3;
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
itemsTapped = <int>[];
......@@ -448,7 +446,7 @@ Future<void> main() async {
const double width = 50.0;
const double radius = 12.3;
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
itemsTapped = <int>[];
......@@ -496,7 +494,7 @@ Future<void> main() async {
const double width = 50.0;
const double radius = 20;
List<int> itemsTapped;
late List<int> itemsTapped;
const Key key = Key('Container with BoxDecoration');
Widget buildFrame(Border border) {
itemsTapped = <int>[];
......
......@@ -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';
......
......@@ -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';
......
......@@ -2,15 +2,13 @@
// 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';
import 'test_widgets.dart';
class ProbeWidget extends StatefulWidget {
const ProbeWidget({ Key key }) : super(key: key);
const ProbeWidget({ Key? key }) : super(key: key);
@override
ProbeWidgetState createState() => ProbeWidgetState();
}
......@@ -39,7 +37,7 @@ class ProbeWidgetState extends State<ProbeWidget> {
}
class BadWidget extends StatelessWidget {
const BadWidget(this.parentState, { Key key }) : super(key: key);
const BadWidget(this.parentState, { Key? key }) : super(key: key);
final BadWidgetParentState parentState;
......@@ -51,7 +49,7 @@ class BadWidget extends StatelessWidget {
}
class BadWidgetParent extends StatefulWidget {
const BadWidgetParent({ Key key }) : super(key: key);
const BadWidgetParent({ Key? key }) : super(key: key);
@override
BadWidgetParentState createState() => BadWidgetParentState();
}
......@@ -71,7 +69,7 @@ class BadWidgetParentState extends State<BadWidgetParent> {
}
class BadDisposeWidget extends StatefulWidget {
const BadDisposeWidget({ Key key }) : super(key: key);
const BadDisposeWidget({ Key? key }) : super(key: key);
@override
BadDisposeWidgetState createState() => BadDisposeWidgetState();
}
......@@ -91,8 +89,8 @@ class BadDisposeWidgetState extends State<BadDisposeWidget> {
class StatefulWrapper extends StatefulWidget {
const StatefulWrapper({
Key key,
this.child,
Key? key,
required this.child,
}) : super(key: key);
final Widget child;
......@@ -107,8 +105,8 @@ class StatefulWrapperState extends State<StatefulWrapper> {
setState(() { built = null; });
}
int built;
int oldBuilt;
int? built;
late int oldBuilt;
static int buildId = 0;
......@@ -122,8 +120,8 @@ class StatefulWrapperState extends State<StatefulWrapper> {
class Wrapper extends StatelessWidget {
const Wrapper({
Key key,
this.child,
Key? key,
required this.child,
}) : super(key: key);
final Widget child;
......@@ -148,11 +146,11 @@ void main() {
right: const ProbeWidget(key: Key('c')),
));
expect(ProbeWidgetState.buildCount, equals(2));
final FlipWidgetState flipState1 = flipKey.currentState as FlipWidgetState;
final FlipWidgetState flipState1 = flipKey.currentState! as FlipWidgetState;
flipState1.flip();
await tester.pump();
expect(ProbeWidgetState.buildCount, equals(3));
final FlipWidgetState flipState2 = flipKey.currentState as FlipWidgetState;
final FlipWidgetState flipState2 = flipKey.currentState! as FlipWidgetState;
flipState2.flip();
await tester.pump();
expect(ProbeWidgetState.buildCount, equals(3));
......@@ -178,7 +176,7 @@ void main() {
final GlobalKey key2 = GlobalKey(debugLabel: 'key2');
bool didMiddle = false;
Widget middle;
late Widget middle;
final List<StateSetter> setStates = <StateSetter>[];
Widget builder(BuildContext context, StateSetter setState) {
setStates.add(setState);
......@@ -214,7 +212,7 @@ void main() {
for (final StatefulWrapperState state in tester.stateList<StatefulWrapperState>(find.byType(StatefulWrapper))) {
expect(state.built, isNotNull);
state.oldBuilt = state.built;
state.oldBuilt = state.built!;
state.trigger();
}
for (final StateSetter setState in setStates)
......
......@@ -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';
......
......@@ -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';
......@@ -13,7 +11,7 @@ import 'package:flutter/widgets.dart';
// The top of the bottom widget is at 550 (the top of the top widget
// is at 0). The top of the bottom widget is 500 when it has been
// scrolled completely into view.
Widget buildFrame(ScrollPhysics physics, { ScrollController scrollController }) {
Widget buildFrame(ScrollPhysics physics, { ScrollController? scrollController }) {
return SingleChildScrollView(
key: UniqueKey(),
physics: physics,
......
......@@ -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/material.dart';
import 'package:flutter/rendering.dart';
......@@ -43,7 +41,7 @@ class ValueClipper<T> extends CustomClipper<T> {
}
class NotifyClipper<T> extends CustomClipper<T> {
NotifyClipper({this.clip}) : super(reclip: clip);
NotifyClipper({required this.clip}) : super(reclip: clip);
final ValueNotifier<T> clip;
......
......@@ -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/material.dart';
import 'package:flutter/rendering.dart';
......@@ -75,7 +73,7 @@ void main() {
await pumpWithColor(Colors.red);
final RenderObject renderObject = tester.firstRenderObject(find.byType(ColorFiltered));
final ColorFilterLayer originalLayer = renderObject.debugLayer as ColorFilterLayer;
final ColorFilterLayer originalLayer = renderObject.debugLayer! as ColorFilterLayer;
expect(originalLayer, isNotNull);
// Change color to force a repaint.
......
......@@ -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';
......@@ -13,7 +11,7 @@ void main() {
testWidgets('Change link during layout', (WidgetTester tester) async {
final GlobalKey key = GlobalKey();
Widget build({ LayerLink linkToUse }) {
Widget build({ LayerLink? linkToUse }) {
return Directionality(
textDirection: TextDirection.ltr,
// The LayoutBuilder forces the CompositedTransformTarget widget to
......@@ -49,7 +47,7 @@ void main() {
}
await tester.pumpWidget(build());
final RenderBox box = key.currentContext.findRenderObject() as RenderBox;
final RenderBox box = key.currentContext!.findRenderObject()! as RenderBox;
expect(box.localToGlobal(Offset.zero), const Offset(118.0, 451.0));
await tester.pumpWidget(build(linkToUse: LayerLink()));
......@@ -59,7 +57,7 @@ void main() {
group('Composited transforms - only offsets', () {
final GlobalKey key = GlobalKey();
Widget build({ @required Alignment targetAlignment, @required Alignment followerAlignment }) {
Widget build({ required Alignment targetAlignment, required Alignment followerAlignment }) {
return Directionality(
textDirection: TextDirection.ltr,
child: Stack(
......@@ -89,19 +87,19 @@ void main() {
testWidgets('topLeft', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.topLeft, followerAlignment: Alignment.topLeft));
final RenderBox box = key.currentContext.findRenderObject() as RenderBox;
final RenderBox box = key.currentContext!.findRenderObject()! as RenderBox;
expect(box.localToGlobal(Offset.zero), const Offset(123.0, 456.0));
});
testWidgets('center', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.center, followerAlignment: Alignment.center));
final RenderBox box = key.currentContext.findRenderObject() as RenderBox;
final RenderBox box = key.currentContext!.findRenderObject()! as RenderBox;
expect(box.localToGlobal(Offset.zero), const Offset(118.0, 451.0));
});
testWidgets('bottomRight - topRight', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.bottomRight, followerAlignment: Alignment.topRight));
final RenderBox box = key.currentContext.findRenderObject() as RenderBox;
final RenderBox box = key.currentContext!.findRenderObject()! as RenderBox;
expect(box.localToGlobal(Offset.zero), const Offset(113.0, 466.0));
});
});
......@@ -110,7 +108,7 @@ void main() {
final GlobalKey key1 = GlobalKey();
final GlobalKey key2 = GlobalKey();
Widget build({ @required Alignment targetAlignment, @required Alignment followerAlignment }) {
Widget build({ required Alignment targetAlignment, required Alignment followerAlignment }) {
return Directionality(
textDirection: TextDirection.ltr,
child: Stack(
......@@ -145,8 +143,8 @@ void main() {
}
testWidgets('topLeft', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.topLeft, followerAlignment: Alignment.topLeft));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(Offset.zero);
final Offset position2 = box2.localToGlobal(Offset.zero);
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -154,8 +152,8 @@ void main() {
testWidgets('center', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.center, followerAlignment: Alignment.center));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(const Offset(40, 5));
final Offset position2 = box2.localToGlobal(const Offset(20, 10));
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -163,8 +161,8 @@ void main() {
testWidgets('bottomRight - topRight', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.bottomRight, followerAlignment: Alignment.topRight));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(const Offset(80, 10));
final Offset position2 = box2.localToGlobal(const Offset(40, 0));
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -175,7 +173,7 @@ void main() {
final GlobalKey key1 = GlobalKey();
final GlobalKey key2 = GlobalKey();
Widget build({ @required Alignment targetAlignment, @required Alignment followerAlignment }) {
Widget build({ required Alignment targetAlignment, required Alignment followerAlignment }) {
return Directionality(
textDirection: TextDirection.ltr,
child: Stack(
......@@ -222,8 +220,8 @@ void main() {
}
testWidgets('topLeft', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.topLeft, followerAlignment: Alignment.topLeft));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(Offset.zero);
final Offset position2 = box2.localToGlobal(Offset.zero);
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -231,8 +229,8 @@ void main() {
testWidgets('center', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.center, followerAlignment: Alignment.center));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(Alignment.center.alongSize(const Size(80, 10)));
final Offset position2 = box2.localToGlobal(Alignment.center.alongSize(const Size(40, 20)));
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -240,8 +238,8 @@ void main() {
testWidgets('bottomRight - topRight', (WidgetTester tester) async {
await tester.pumpWidget(build(targetAlignment: Alignment.bottomRight, followerAlignment: Alignment.topRight));
final RenderBox box1 = key1.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box1 = key1.currentContext!.findRenderObject()! as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
final Offset position1 = box1.localToGlobal(Alignment.bottomRight.alongSize(const Size(80, 10)));
final Offset position2 = box2.localToGlobal(Alignment.topRight.alongSize(const Size(40, 20)));
expect(position1, offsetMoreOrLessEquals(position2));
......@@ -255,7 +253,7 @@ void main() {
bool tapped = false;
Widget build({ @required Alignment targetAlignment, @required Alignment followerAlignment }) {
Widget build({ required Alignment targetAlignment, required Alignment followerAlignment }) {
return Directionality(
textDirection: TextDirection.ltr,
child: Stack(
......@@ -294,7 +292,7 @@ void main() {
for (final Alignment followerAlignment in alignments) {
testWidgets('$targetAlignment - $followerAlignment', (WidgetTester tester) async{
await tester.pumpWidget(build(targetAlignment: targetAlignment, followerAlignment: followerAlignment));
final RenderBox box2 = key2.currentContext.findRenderObject() as RenderBox;
final RenderBox box2 = key2.currentContext!.findRenderObject()! as RenderBox;
expect(box2.size, const Size(2.0, 2.0));
expect(tapped, isFalse);
await tester.tap(find.byKey(key3));
......
......@@ -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';
......
......@@ -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_test/flutter_test.dart';
import 'package:flutter/widgets.dart';
......@@ -440,7 +438,7 @@ void main() {
final RenderBox decoratedBox = tester.renderObject(find.byType(DecoratedBox).last);
final PaintingContext context = _MockPaintingContext();
FlutterError error;
late FlutterError error;
try {
decoratedBox.paint(context, const Offset(0, 0));
} on FlutterError catch (e) {
......
......@@ -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';
......
......@@ -2,15 +2,13 @@
// 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/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
class TestMultiChildLayoutDelegate extends MultiChildLayoutDelegate {
BoxConstraints getSizeConstraints;
late BoxConstraints getSizeConstraints;
@override
Size getSize(BoxConstraints constraints) {
......@@ -19,10 +17,10 @@ class TestMultiChildLayoutDelegate extends MultiChildLayoutDelegate {
return const Size(200.0, 300.0);
}
Size performLayoutSize;
Size performLayoutSize0;
Size performLayoutSize1;
bool performLayoutIsChild;
Size? performLayoutSize;
late Size performLayoutSize0;
late Size performLayoutSize1;
late bool performLayoutIsChild;
@override
void performLayout(Size size) {
......@@ -60,7 +58,7 @@ Widget buildFrame(MultiChildLayoutDelegate delegate) {
}
class PreferredSizeDelegate extends MultiChildLayoutDelegate {
PreferredSizeDelegate({ this.preferredSize });
PreferredSizeDelegate({ required this.preferredSize });
final Size preferredSize;
......@@ -152,8 +150,8 @@ class InvalidConstraintsChildLayoutDelegate extends MultiChildLayoutDelegate {
class LayoutWithMissingId extends ParentDataWidget<MultiChildLayoutParentData> {
const LayoutWithMissingId({
Key key,
@required Widget child,
Key? key,
required Widget child,
}) : assert(child != null),
super(key: key, child: child);
......@@ -174,8 +172,8 @@ void main() {
expect(delegate.getSizeConstraints.minHeight, 0.0);
expect(delegate.getSizeConstraints.maxHeight, 600.0);
expect(delegate.performLayoutSize.width, 200.0);
expect(delegate.performLayoutSize.height, 300.0);
expect(delegate.performLayoutSize!.width, 200.0);
expect(delegate.performLayoutSize!.height, 300.0);
expect(delegate.performLayoutSize0.width, 150.0);
expect(delegate.performLayoutSize0.height, 100.0);
expect(delegate.performLayoutSize1.width, 100.0);
......@@ -285,16 +283,16 @@ void main() {
}
Future<void> expectFlutterErrorMessage({
Widget widget,
MultiChildLayoutDelegate delegate,
@required WidgetTester tester,
@required String message,
Widget? widget,
MultiChildLayoutDelegate? delegate,
required WidgetTester tester,
required String message,
}) async {
final FlutterExceptionHandler oldHandler = FlutterError.onError;
final FlutterExceptionHandler? oldHandler = FlutterError.onError;
final List<FlutterErrorDetails> errors = <FlutterErrorDetails>[];
FlutterError.onError = (FlutterErrorDetails error) => errors.add(error);
try {
await tester.pumpWidget(widget ?? buildSingleChildFrame(delegate));
await tester.pumpWidget(widget ?? buildSingleChildFrame(delegate!));
} finally {
FlutterError.onError = oldHandler;
}
......
......@@ -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/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
......@@ -11,10 +9,10 @@ import 'package:flutter_test/flutter_test.dart';
import '../flutter_test_alternative.dart' show Fake;
class TestCustomPainter extends CustomPainter {
TestCustomPainter({ this.log, this.name });
TestCustomPainter({ required this.log, this.name });
final List<String> log;
final String name;
final List<String?> log;
final String? name;
@override
void paint(Canvas canvas, Size size) {
......@@ -90,12 +88,12 @@ void main() {
isComplex: true,
painter: TestCustomPainter(log: log),
));
final RenderCustomPaint renderCustom = target.currentContext.findRenderObject() as RenderCustomPaint;
final RenderCustomPaint renderCustom = target.currentContext!.findRenderObject()! as RenderCustomPaint;
final MockPaintingContext paintingContext = MockPaintingContext();
final MockCanvas canvas = paintingContext.canvas;
FlutterError getError() {
FlutterError error;
late FlutterError error;
try {
renderCustom.paint(paintingContext, const Offset(0, 0));
} on FlutterError catch (e) {
......@@ -144,32 +142,32 @@ void main() {
await tester.pumpWidget(Center(
child: CustomPaint(key: target),
));
expect(target.currentContext.size, Size.zero);
expect(target.currentContext!.size, Size.zero);
await tester.pumpWidget(Center(
child: CustomPaint(key: target, child: Container()),
));
expect(target.currentContext.size, const Size(800.0, 600.0));
expect(target.currentContext!.size, const Size(800.0, 600.0));
await tester.pumpWidget(Center(
child: CustomPaint(key: target, size: const Size(20.0, 20.0)),
));
expect(target.currentContext.size, const Size(20.0, 20.0));
expect(target.currentContext!.size, const Size(20.0, 20.0));
await tester.pumpWidget(Center(
child: CustomPaint(key: target, size: const Size(2000.0, 100.0)),
));
expect(target.currentContext.size, const Size(800.0, 100.0));
expect(target.currentContext!.size, const Size(800.0, 100.0));
await tester.pumpWidget(Center(
child: CustomPaint(key: target, size: Size.zero, child: Container()),
));
expect(target.currentContext.size, const Size(800.0, 600.0));
expect(target.currentContext!.size, const Size(800.0, 600.0));
await tester.pumpWidget(Center(
child: CustomPaint(key: target, child: const SizedBox(height: 0.0, width: 0.0)),
));
expect(target.currentContext.size, Size.zero);
expect(target.currentContext!.size, Size.zero);
});
......@@ -182,7 +180,7 @@ void main() {
isComplex: true,
painter: TestCustomPainter(log: log),
));
RenderCustomPaint renderCustom = target.currentContext.findRenderObject() as RenderCustomPaint;
RenderCustomPaint renderCustom = target.currentContext!.findRenderObject()! as RenderCustomPaint;
expect(renderCustom.isComplex, true);
expect(renderCustom.willChange, false);
......@@ -191,7 +189,7 @@ void main() {
willChange: true,
foregroundPainter: TestCustomPainter(log: log),
));
renderCustom = target.currentContext.findRenderObject() as RenderCustomPaint;
renderCustom = target.currentContext!.findRenderObject()! as RenderCustomPaint;
expect(renderCustom.isComplex, false);
expect(renderCustom.willChange, true);
});
......
......@@ -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';
import 'package:flutter_test/flutter_test.dart';
......@@ -373,7 +371,7 @@ void _defineTests() {
expect(semantics, hasSemantics(expectedSemantics, ignoreRect: true, ignoreTransform: true));
// Do the actions work?
final SemanticsOwner semanticsOwner = tester.binding.pipelineOwner.semanticsOwner;
final SemanticsOwner semanticsOwner = tester.binding.pipelineOwner.semanticsOwner!;
int expectedLength = 1;
for (final SemanticsAction action in allActions) {
switch (action) {
......@@ -710,7 +708,7 @@ class _DiffTester {
///
/// - checks that initial and final configurations are in the desired states.
/// - checks that keyed nodes have stable IDs.
Future<void> diff({ List<String> from, List<String> to }) async {
Future<void> diff({ required List<String> from, required List<String> to }) async {
final SemanticsTester semanticsTester = SemanticsTester(tester);
TestSemantics createExpectations(List<String> labels) {
......@@ -735,12 +733,12 @@ class _DiffTester {
));
expect(semanticsTester, hasSemantics(createExpectations(from), ignoreId: true));
SemanticsNode root = RendererBinding.instance?.renderView?.debugSemantics;
SemanticsNode root = RendererBinding.instance!.renderView.debugSemantics!;
final Map<Key, int> idAssignments = <Key, int>{};
root.visitChildren((SemanticsNode firstChild) {
firstChild.visitChildren((SemanticsNode node) {
if (node.key != null) {
idAssignments[node.key] = node.id;
idAssignments[node.key!] = node.id;
}
return true;
});
......@@ -753,7 +751,7 @@ class _DiffTester {
await tester.pumpAndSettle();
expect(semanticsTester, hasSemantics(createExpectations(to), ignoreId: true));
root = RendererBinding.instance?.renderView?.debugSemantics;
root = RendererBinding.instance!.renderView.debugSemantics!;
root.visitChildren((SemanticsNode firstChild) {
firstChild.visitChildren((SemanticsNode node) {
if (node.key != null && idAssignments[node.key] != null) {
......@@ -787,7 +785,7 @@ class _SemanticsDiffTest extends CustomPainter {
List<CustomPainterSemantics> buildSemantics(Size size) {
final List<CustomPainterSemantics> semantics = <CustomPainterSemantics>[];
for (final String label in data) {
Key key;
Key? key;
if (label.endsWith('-k')) {
key = ValueKey<String>(label);
}
......@@ -810,7 +808,7 @@ class _SemanticsDiffTest extends CustomPainter {
}
class _PainterWithSemantics extends CustomPainter {
_PainterWithSemantics({ this.semantics });
_PainterWithSemantics({ required this.semantics });
final CustomPainterSemantics semantics;
......
......@@ -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';
......
......@@ -2,17 +2,15 @@
// 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';
class TestSingleChildLayoutDelegate extends SingleChildLayoutDelegate {
BoxConstraints constraintsFromGetSize;
BoxConstraints constraintsFromGetConstraintsForChild;
Size sizeFromGetPositionForChild;
Size childSizeFromGetPositionForChild;
late BoxConstraints constraintsFromGetSize;
BoxConstraints? constraintsFromGetConstraintsForChild;
late Size sizeFromGetPositionForChild;
late Size childSizeFromGetPositionForChild;
@override
Size getSize(BoxConstraints constraints) {
......@@ -105,10 +103,10 @@ void main() {
expect(delegate.constraintsFromGetSize.minHeight, 0.0);
expect(delegate.constraintsFromGetSize.maxHeight, 600.0);
expect(delegate.constraintsFromGetConstraintsForChild.minWidth, 0.0);
expect(delegate.constraintsFromGetConstraintsForChild.maxWidth, 800.0);
expect(delegate.constraintsFromGetConstraintsForChild.minHeight, 0.0);
expect(delegate.constraintsFromGetConstraintsForChild.maxHeight, 600.0);
expect(delegate.constraintsFromGetConstraintsForChild!.minWidth, 0.0);
expect(delegate.constraintsFromGetConstraintsForChild!.maxWidth, 800.0);
expect(delegate.constraintsFromGetConstraintsForChild!.minHeight, 0.0);
expect(delegate.constraintsFromGetConstraintsForChild!.maxHeight, 600.0);
expect(delegate.sizeFromGetPositionForChild.width, 200.0);
expect(delegate.sizeFromGetPositionForChild.height, 300.0);
......
......@@ -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/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
......@@ -19,7 +17,7 @@ void main() {
direction: Axis.vertical,
children: children
);
FlutterError error;
late FlutterError error;
try {
debugChildrenHaveDuplicateKeys(widget, children);
} on FlutterError catch (e) {
......@@ -47,7 +45,7 @@ void main() {
Container(key: key),
Container(key: key),
];
FlutterError error;
late FlutterError error;
try {
debugItemsHaveDuplicateKeys(items);
} on FlutterError catch (e) {
......@@ -68,7 +66,7 @@ void main() {
await tester.pumpWidget(
Builder(
builder: (BuildContext context) {
FlutterError error;
late FlutterError error;
try {
debugCheckHasTable(context);
} on FlutterError catch (e) {
......@@ -100,7 +98,7 @@ void main() {
await tester.pumpWidget(
Builder(
builder: (BuildContext context) {
FlutterError error;
late FlutterError error;
try {
debugCheckHasMediaQuery(context);
} on FlutterError catch (e) {
......@@ -141,14 +139,14 @@ void main() {
test('debugWidgetBuilderValue control test', () {
final Widget widget = Container();
FlutterError error;
FlutterError? error;
try {
debugWidgetBuilderValue(widget, null);
} on FlutterError catch (e) {
error = e;
} finally {
expect(error, isNotNull);
expect(error.diagnostics.length, 4);
expect(error!.diagnostics.length, 4);
expect(error.diagnostics[1], isA<DiagnosticsProperty<Widget>>());
expect(error.diagnostics[1].style, DiagnosticsTreeStyle.errorProperty);
expect(
......@@ -191,7 +189,7 @@ void main() {
error = e;
} finally {
expect(error, isNotNull);
expect(error.diagnostics.length, 3);
expect(error!.diagnostics.length, 3);
expect(error.diagnostics[1], isA<DiagnosticsProperty<Widget>>());
expect(error.diagnostics[1].style, DiagnosticsTreeStyle.errorProperty);
expect(
......@@ -219,7 +217,7 @@ void main() {
test('debugAssertAllWidgetVarsUnset', () {
debugHighlightDeprecatedWidgets = true;
FlutterError error;
late FlutterError error;
try {
debugAssertAllWidgetVarsUnset('The value of a widget debug variable was changed by the test.');
} on FlutterError catch (e) {
......
......@@ -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 TextHeightBehavior;
import 'package:flutter_test/flutter_test.dart';
......@@ -117,7 +115,7 @@ void main() {
testWidgets('DefaultTextHeightBehavior.of(context) returns null if no '
'DefaultTextHeightBehavior widget in tree', (WidgetTester tester) async {
const Text textWidget = Text('Hello', textDirection: TextDirection.ltr);
TextHeightBehavior textHeightBehavior;
TextHeightBehavior? textHeightBehavior;
await tester.pumpWidget(Builder(
builder: (BuildContext context) {
......
......@@ -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' as ui show TextHeightBehavior;
import 'package:flutter_test/flutter_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';
......@@ -12,7 +10,7 @@ void main() {
final List<TextDirection> log = <TextDirection>[];
final Widget inner = Builder(
builder: (BuildContext context) {
log.add(Directionality.of(context));
log.add(Directionality.of(context)!);
return const Placeholder();
}
);
......@@ -64,10 +62,4 @@ void main() {
));
expect(good, isTrue);
});
testWidgets("Directionality can't be null", (WidgetTester tester) async {
expect(() {
Directionality(textDirection: nonconst(null), child: const Placeholder());
}, throwsAssertionError);
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment