forked from firka/flutter
Convert some more widget tests to NNBD (#68160)
This commit is contained in:
@@ -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/physics.dart';
|
||||
@@ -46,10 +44,10 @@ class TestBehavior extends ScrollBehavior {
|
||||
}
|
||||
|
||||
class TestScrollPhysics extends ClampingScrollPhysics {
|
||||
const TestScrollPhysics({ ScrollPhysics parent }) : super(parent: parent);
|
||||
const TestScrollPhysics({ ScrollPhysics? parent }) : super(parent: parent);
|
||||
|
||||
@override
|
||||
TestScrollPhysics applyTo(ScrollPhysics ancestor) {
|
||||
TestScrollPhysics applyTo(ScrollPhysics? ancestor) {
|
||||
return TestScrollPhysics(parent: parent?.applyTo(ancestor) ?? ancestor);
|
||||
}
|
||||
|
||||
@@ -59,9 +57,9 @@ class TestScrollPhysics extends ClampingScrollPhysics {
|
||||
|
||||
class TestViewportScrollPosition extends ScrollPositionWithSingleContext {
|
||||
TestViewportScrollPosition({
|
||||
ScrollPhysics physics,
|
||||
ScrollContext context,
|
||||
ScrollPosition oldPosition,
|
||||
required ScrollPhysics physics,
|
||||
required ScrollContext context,
|
||||
ScrollPosition? oldPosition,
|
||||
}) : super(physics: physics, context: context, oldPosition: oldPosition);
|
||||
|
||||
@override
|
||||
|
||||
@@ -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';
|
||||
import 'package:flutter/rendering.dart';
|
||||
@@ -404,8 +402,8 @@ List<Widget> createSwitchedChildList(List<Widget> childList, int i, int j) {
|
||||
|
||||
class SwitchingChildBuilderTest extends StatefulWidget {
|
||||
const SwitchingChildBuilderTest({
|
||||
this.children,
|
||||
Key key,
|
||||
required this.children,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
@@ -415,8 +413,8 @@ class SwitchingChildBuilderTest extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SwitchingChildBuilderTest extends State<SwitchingChildBuilderTest> {
|
||||
List<Widget> children;
|
||||
Map<Key, int> _mapKeyToIndex;
|
||||
late List<Widget> children;
|
||||
late Map<Key, int> _mapKeyToIndex;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -424,7 +422,7 @@ class _SwitchingChildBuilderTest extends State<SwitchingChildBuilderTest> {
|
||||
children = widget.children;
|
||||
_mapKeyToIndex = <Key, int>{};
|
||||
for (int index = 0; index < children.length; index += 1) {
|
||||
final Key key = children[index].key;
|
||||
final Key? key = children[index].key;
|
||||
if (key != null) {
|
||||
_mapKeyToIndex[key] = index;
|
||||
}
|
||||
@@ -438,7 +436,7 @@ class _SwitchingChildBuilderTest extends State<SwitchingChildBuilderTest> {
|
||||
children = widget.children;
|
||||
_mapKeyToIndex = <Key, int>{};
|
||||
for (int index = 0; index < children.length; index += 1) {
|
||||
final Key key = children[index].key;
|
||||
final Key? key = children[index].key;
|
||||
if (key != null) {
|
||||
_mapKeyToIndex[key] = index;
|
||||
}
|
||||
@@ -475,9 +473,9 @@ class _SwitchingChildBuilderTest extends State<SwitchingChildBuilderTest> {
|
||||
|
||||
class SwitchingChildListTest extends StatefulWidget {
|
||||
const SwitchingChildListTest({
|
||||
this.children,
|
||||
required this.children,
|
||||
this.viewportFraction = 1.0,
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
@@ -512,9 +510,9 @@ class _SwitchingChildListTest extends State<SwitchingChildListTest> {
|
||||
|
||||
class SwitchingSliverListTest extends StatefulWidget {
|
||||
const SwitchingSliverListTest({
|
||||
this.children,
|
||||
required this.children,
|
||||
this.viewportFraction = 1.0,
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
@@ -548,9 +546,9 @@ class _SwitchingSliverListTest extends State<SwitchingSliverListTest> {
|
||||
|
||||
class WidgetTest0 extends StatefulWidget {
|
||||
const WidgetTest0({
|
||||
this.text,
|
||||
required this.text,
|
||||
this.keepAlive = false,
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final String text;
|
||||
@@ -581,9 +579,9 @@ class _WidgetTest0State extends State<WidgetTest0> with AutomaticKeepAliveClient
|
||||
|
||||
class WidgetTest1 extends StatefulWidget {
|
||||
const WidgetTest1({
|
||||
this.text,
|
||||
required this.text,
|
||||
this.keepAlive = false,
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final String text;
|
||||
@@ -614,9 +612,9 @@ class _WidgetTest1State extends State<WidgetTest1> with AutomaticKeepAliveClient
|
||||
|
||||
class WidgetTest2 extends StatefulWidget {
|
||||
const WidgetTest2({
|
||||
this.text,
|
||||
required this.text,
|
||||
this.keepAlive = false,
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final String text;
|
||||
|
||||
@@ -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/rendering.dart';
|
||||
@@ -544,6 +542,6 @@ void main() {
|
||||
),
|
||||
parentUsesSize: true,
|
||||
);
|
||||
expect(renderObject.geometry.paintOrigin, 10.0);
|
||||
expect(renderObject.geometry!.paintOrigin, 10.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 'dart:math' as math;
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -11,9 +9,9 @@ import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
void verifyPaintPosition(GlobalKey key, Offset ideal) {
|
||||
final RenderObject target = key.currentContext.findRenderObject();
|
||||
final RenderObject target = key.currentContext!.findRenderObject()!;
|
||||
expect(target.parent, isA<RenderViewport>());
|
||||
final SliverPhysicalParentData parentData = target.parentData as SliverPhysicalParentData;
|
||||
final SliverPhysicalParentData parentData = target.parentData! as SliverPhysicalParentData;
|
||||
final Offset actual = parentData.paintOffset;
|
||||
expect(actual, ideal);
|
||||
}
|
||||
@@ -57,7 +55,7 @@ void main() {
|
||||
|
||||
class RenderBigSliver extends RenderSliver {
|
||||
static const double height = 550.0;
|
||||
double get paintExtent => (height - constraints.scrollOffset).clamp(0.0, constraints.remainingPaintExtent) as double;
|
||||
double get paintExtent => (height - constraints.scrollOffset).clamp(0.0, constraints.remainingPaintExtent);
|
||||
|
||||
@override
|
||||
void performLayout() {
|
||||
@@ -70,7 +68,7 @@ class RenderBigSliver extends RenderSliver {
|
||||
}
|
||||
|
||||
class BigSliver extends LeafRenderObjectWidget {
|
||||
const BigSliver({ Key key }) : super(key: key);
|
||||
const BigSliver({ Key? key }) : super(key: key);
|
||||
@override
|
||||
RenderBigSliver createRenderObject(BuildContext context) {
|
||||
return RenderBigSliver();
|
||||
@@ -92,7 +90,7 @@ class RenderOverlappingSliver extends RenderSliver {
|
||||
}
|
||||
|
||||
double get layoutExtent {
|
||||
return (totalHeight - constraints.scrollOffset).clamp(0.0, constraints.remainingPaintExtent) as double;
|
||||
return (totalHeight - constraints.scrollOffset).clamp(0.0, constraints.remainingPaintExtent);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -107,7 +105,7 @@ class RenderOverlappingSliver extends RenderSliver {
|
||||
}
|
||||
|
||||
class OverlappingSliver extends LeafRenderObjectWidget {
|
||||
const OverlappingSliver({ Key key }) : super(key: key);
|
||||
const OverlappingSliver({ Key? key }) : super(key: key);
|
||||
@override
|
||||
RenderOverlappingSliver createRenderObject(BuildContext context) {
|
||||
return RenderOverlappingSliver();
|
||||
|
||||
@@ -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';
|
||||
@@ -51,9 +49,7 @@ Future<void> testSliverFixedExtentList(WidgetTester tester, List<String> items)
|
||||
childCount : items.length,
|
||||
findChildIndexCallback: (Key key) {
|
||||
final ValueKey<String> valueKey = key as ValueKey<String>;
|
||||
final String data = valueKey.value;
|
||||
final int index = items.indexOf(data);
|
||||
return index == -1 ? null : index;
|
||||
return items.indexOf(valueKey.value);
|
||||
},
|
||||
),
|
||||
),
|
||||
@@ -68,7 +64,7 @@ void verify(WidgetTester tester, List<Offset> idealPositions, List<bool> idealVi
|
||||
(RenderBox target) => target.localToGlobal(const Offset(0.0, 0.0))
|
||||
).toList();
|
||||
final List<bool> actualVisibles = tester.renderObjectList<RenderSliverToBoxAdapter>(find.byType(SliverToBoxAdapter, skipOffstage: false)).map<bool>(
|
||||
(RenderSliverToBoxAdapter target) => target.geometry.visible
|
||||
(RenderSliverToBoxAdapter target) => target.geometry!.visible
|
||||
).toList();
|
||||
expect(actualPositions, equals(idealPositions));
|
||||
expect(actualVisibles, equals(idealVisibles));
|
||||
@@ -497,7 +493,7 @@ void main() {
|
||||
addRepaintBoundaries: false,
|
||||
addSemanticIndexes: false,
|
||||
);
|
||||
final KeyedSubtree wrapped = builderThrowsDelegate.build(_NullBuildContext(), 0) as KeyedSubtree;
|
||||
final KeyedSubtree wrapped = builderThrowsDelegate.build(_NullBuildContext(), 0)! as KeyedSubtree;
|
||||
expect(wrapped.child, errorText);
|
||||
expect(tester.takeException(), 'builder');
|
||||
ErrorWidget.builder = oldBuilder;
|
||||
@@ -614,8 +610,8 @@ void main() {
|
||||
expect(semantics.nodesWith(label: 'a'), hasLength(0));
|
||||
expect(find.byType(Text), findsNothing);
|
||||
final RenderViewport renderViewport = tester.renderObject(find.byType(Viewport));
|
||||
final RenderSliver renderSliver = renderViewport.lastChild;
|
||||
expect(renderSliver.geometry.scrollExtent, 0.0);
|
||||
final RenderSliver renderSliver = renderViewport.lastChild!;
|
||||
expect(renderSliver.geometry!.scrollExtent, 0.0);
|
||||
expect(find.byType(SliverOffstage), findsNothing);
|
||||
});
|
||||
|
||||
@@ -633,8 +629,8 @@ void main() {
|
||||
expect(semantics.nodesWith(label: 'a'), hasLength(1));
|
||||
expect(find.byType(Text), findsOneWidget);
|
||||
final RenderViewport renderViewport = tester.renderObject(find.byType(Viewport));
|
||||
final RenderSliver renderSliver = renderViewport.lastChild;
|
||||
expect(renderSliver.geometry.scrollExtent, 14.0);
|
||||
final RenderSliver renderSliver = renderViewport.lastChild!;
|
||||
expect(renderSliver.geometry!.scrollExtent, 14.0);
|
||||
expect(find.byType(SliverOffstage), paints..paragraph());
|
||||
});
|
||||
});
|
||||
@@ -945,7 +941,7 @@ bool sameHorizontal(Offset a, Offset b) => b.dy == a.dy;
|
||||
bool sameVertical(Offset a, Offset b) => b.dx == a.dx;
|
||||
|
||||
class TestSliverGrid extends StatelessWidget {
|
||||
const TestSliverGrid(this.children, { Key key }) : super(key: key);
|
||||
const TestSliverGrid(this.children, { Key? key }) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
|
||||
@@ -1003,7 +999,7 @@ class _TestArbitrarySliverGridLayout implements SliverGridLayout {
|
||||
}
|
||||
|
||||
class TestSliverFixedExtentList extends StatelessWidget {
|
||||
const TestSliverFixedExtentList(this.children, { Key key }) : super(key: key);
|
||||
const TestSliverFixedExtentList(this.children, { Key? key }) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
|
||||
@@ -1026,7 +1022,7 @@ class TestSliverFixedExtentList extends StatelessWidget {
|
||||
}
|
||||
|
||||
class KeepAlive extends StatefulWidget {
|
||||
const KeepAlive(this.data, { Key key }) : super(key: key);
|
||||
const KeepAlive(this.data, { Key? key }) : super(key: key);
|
||||
|
||||
final String data;
|
||||
|
||||
|
||||
@@ -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/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
@@ -61,7 +59,7 @@ void main() {
|
||||
StackParentData parentData;
|
||||
|
||||
container = tester.element(find.byKey(key));
|
||||
parentData = container.renderObject.parentData as StackParentData;
|
||||
parentData = container.renderObject!.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, isNull);
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -86,7 +84,7 @@ void main() {
|
||||
);
|
||||
|
||||
container = tester.element(find.byKey(key));
|
||||
parentData = container.renderObject.parentData as StackParentData;
|
||||
parentData = container.renderObject!.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, equals(10.0));
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -108,7 +106,7 @@ void main() {
|
||||
Element containerElement = tester.element(find.byKey(key));
|
||||
|
||||
StackParentData parentData;
|
||||
parentData = containerElement.renderObject.parentData as StackParentData;
|
||||
parentData = containerElement.renderObject!.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, isNull);
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -124,7 +122,7 @@ void main() {
|
||||
);
|
||||
containerElement = tester.element(find.byKey(key));
|
||||
|
||||
parentData = containerElement.renderObject.parentData as StackParentData;
|
||||
parentData = containerElement.renderObject!.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, isNull);
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -153,11 +151,11 @@ void main() {
|
||||
);
|
||||
|
||||
final Element child0 = tester.element(find.byKey(child0Key));
|
||||
final StackParentData child0RenderObjectParentData = child0.renderObject.parentData as StackParentData;
|
||||
final StackParentData child0RenderObjectParentData = child0.renderObject!.parentData! as StackParentData;
|
||||
expect(child0RenderObjectParentData.offset, equals(const Offset(0.0, 0.0)));
|
||||
|
||||
final Element child1 = tester.element(find.byKey(child1Key));
|
||||
final StackParentData child1RenderObjectParentData = child1.renderObject.parentData as StackParentData;
|
||||
final StackParentData child1RenderObjectParentData = child1.renderObject!.parentData! as StackParentData;
|
||||
expect(child1RenderObjectParentData.offset, equals(const Offset(5.0, 5.0)));
|
||||
|
||||
await tester.pumpWidget(
|
||||
@@ -199,11 +197,11 @@ void main() {
|
||||
);
|
||||
|
||||
final Element child0 = tester.element(find.byKey(child0Key));
|
||||
final StackParentData child0RenderObjectParentData = child0.renderObject.parentData as StackParentData;
|
||||
final StackParentData child0RenderObjectParentData = child0.renderObject!.parentData! as StackParentData;
|
||||
expect(child0RenderObjectParentData.offset, equals(const Offset(0.0, 0.0)));
|
||||
|
||||
final Element child1 = tester.element(find.byKey(child1Key));
|
||||
final StackParentData child1RenderObjectParentData = child1.renderObject.parentData as StackParentData;
|
||||
final StackParentData child1RenderObjectParentData = child1.renderObject!.parentData! as StackParentData;
|
||||
expect(child1RenderObjectParentData.offset, equals(const Offset(5.0, 5.0)));
|
||||
|
||||
await tester.pumpWidget(
|
||||
@@ -245,7 +243,7 @@ void main() {
|
||||
|
||||
testWidgets('Can construct an IndexedStack', (WidgetTester tester) async {
|
||||
const int itemCount = 3;
|
||||
List<int> itemsPainted;
|
||||
late List<int> itemsPainted;
|
||||
|
||||
Widget buildFrame(int index) {
|
||||
itemsPainted = <int>[];
|
||||
@@ -282,7 +280,7 @@ void main() {
|
||||
testWidgets('Can hit test an IndexedStack', (WidgetTester tester) async {
|
||||
const Key key = Key('indexedStack');
|
||||
const int itemCount = 3;
|
||||
List<int> itemsTapped;
|
||||
late List<int> itemsTapped;
|
||||
|
||||
Widget buildFrame(int index) {
|
||||
itemsTapped = <int>[];
|
||||
@@ -336,8 +334,8 @@ void main() {
|
||||
StackParentData parentData;
|
||||
|
||||
box = tester.element(find.byKey(key));
|
||||
renderBox = box.renderObject as RenderBox;
|
||||
parentData = renderBox.parentData as StackParentData;
|
||||
renderBox = box.renderObject! as RenderBox;
|
||||
parentData = renderBox.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, isNull);
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -364,8 +362,8 @@ void main() {
|
||||
);
|
||||
|
||||
box = tester.element(find.byKey(key));
|
||||
renderBox = box.renderObject as RenderBox;
|
||||
parentData = renderBox.parentData as StackParentData;
|
||||
renderBox = box.renderObject! as RenderBox;
|
||||
parentData = renderBox.parentData! as StackParentData;
|
||||
expect(parentData.top, isNull);
|
||||
expect(parentData.right, equals(10.0));
|
||||
expect(parentData.bottom, isNull);
|
||||
@@ -388,7 +386,7 @@ void main() {
|
||||
});
|
||||
|
||||
testWidgets('IndexedStack with null index', (WidgetTester tester) async {
|
||||
bool tapped;
|
||||
bool? tapped;
|
||||
|
||||
await tester.pumpWidget(
|
||||
Directionality(
|
||||
|
||||
@@ -2,13 +2,11 @@
|
||||
// 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';
|
||||
|
||||
class Foo extends StatefulWidget {
|
||||
const Foo({ Key key }) : super(key: key);
|
||||
const Foo({ Key? key }) : super(key: key);
|
||||
@override
|
||||
FooState createState() => FooState();
|
||||
}
|
||||
|
||||
@@ -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,13 +2,11 @@
|
||||
// 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';
|
||||
|
||||
class InnerWidget extends StatefulWidget {
|
||||
const InnerWidget({ Key key }) : super(key: key);
|
||||
const InnerWidget({ Key? key }) : super(key: key);
|
||||
|
||||
@override
|
||||
InnerWidgetState createState() => InnerWidgetState();
|
||||
@@ -30,7 +28,7 @@ class InnerWidgetState extends State<InnerWidget> {
|
||||
}
|
||||
|
||||
class OuterContainer extends StatefulWidget {
|
||||
const OuterContainer({ Key key, this.child }) : super(key: key);
|
||||
const OuterContainer({ Key? key, required this.child }) : super(key: key);
|
||||
|
||||
final InnerWidget child;
|
||||
|
||||
@@ -61,7 +59,7 @@ void main() {
|
||||
final InnerWidgetState innerElementState = innerElement.state as InnerWidgetState;
|
||||
expect(innerElementState.widget, equals(inner1));
|
||||
expect(innerElementState._didInitState, isTrue);
|
||||
expect(innerElement.renderObject.attached, isTrue);
|
||||
expect(innerElement.renderObject!.attached, isTrue);
|
||||
|
||||
inner2 = const InnerWidget(key: innerKey);
|
||||
outer2 = OuterContainer(key: outerKey, child: inner2);
|
||||
@@ -73,7 +71,7 @@ void main() {
|
||||
|
||||
expect(innerElementState.widget, equals(inner2));
|
||||
expect(innerElementState._didInitState, isTrue);
|
||||
expect(innerElement.renderObject.attached, isTrue);
|
||||
expect(innerElement.renderObject!.attached, isTrue);
|
||||
|
||||
final StatefulElement outerElement = tester.element(find.byKey(outerKey));
|
||||
expect(outerElement.state.widget, equals(outer2));
|
||||
@@ -83,6 +81,6 @@ void main() {
|
||||
expect(tester.element(find.byKey(innerKey)), equals(innerElement));
|
||||
expect(innerElement.state, equals(innerElementState));
|
||||
expect(innerElementState.widget, equals(inner2));
|
||||
expect(innerElement.renderObject.attached, isTrue);
|
||||
expect(innerElement.renderObject!.attached, isTrue);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,16 +2,14 @@
|
||||
// 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';
|
||||
|
||||
class TestStatusTransitionWidget extends StatusTransitionWidget {
|
||||
const TestStatusTransitionWidget({
|
||||
Key key,
|
||||
this.builder,
|
||||
Animation<double> animation,
|
||||
Key? key,
|
||||
required this.builder,
|
||||
required Animation<double> animation,
|
||||
}) : super(key: key, animation: animation);
|
||||
|
||||
final WidgetBuilder builder;
|
||||
|
||||
@@ -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/widgets.dart';
|
||||
|
||||
class TestWidget extends StatefulWidget {
|
||||
const TestWidget({
|
||||
Key key,
|
||||
this.child,
|
||||
this.persistentState,
|
||||
this.syncedState,
|
||||
Key? key,
|
||||
required this.child,
|
||||
required this.persistentState,
|
||||
required this.syncedState,
|
||||
}) : super(key: key);
|
||||
|
||||
final Widget child;
|
||||
@@ -24,8 +22,8 @@ class TestWidget extends StatefulWidget {
|
||||
}
|
||||
|
||||
class TestWidgetState extends State<TestWidget> {
|
||||
int persistentState;
|
||||
int syncedState;
|
||||
late int persistentState;
|
||||
late int syncedState;
|
||||
int updates = 0;
|
||||
|
||||
@override
|
||||
@@ -56,6 +54,7 @@ void main() {
|
||||
child: Container(
|
||||
child: TestWidget(
|
||||
persistentState: 1,
|
||||
syncedState: 0,
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
@@ -72,6 +71,7 @@ void main() {
|
||||
child: Container(
|
||||
child: TestWidget(
|
||||
persistentState: 2,
|
||||
syncedState: 0,
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
@@ -90,6 +90,7 @@ void main() {
|
||||
child: Container(
|
||||
child: TestWidget(
|
||||
persistentState: 10,
|
||||
syncedState: 0,
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
@@ -105,6 +106,7 @@ void main() {
|
||||
Container(
|
||||
child: TestWidget(
|
||||
persistentState: 11,
|
||||
syncedState: 0,
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -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/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class TestStatefulWidget extends StatefulWidget {
|
||||
const TestStatefulWidget({ Key key }) : super(key: key);
|
||||
const TestStatefulWidget({ Key? key }) : super(key: key);
|
||||
|
||||
@override
|
||||
TestStatefulWidgetState createState() => TestStatefulWidgetState();
|
||||
@@ -22,7 +20,7 @@ class TestStatefulWidgetState extends State<TestStatefulWidget> {
|
||||
}
|
||||
|
||||
class TestChildWidget extends StatefulWidget {
|
||||
const TestChildWidget({ Key key }) : super(key: key);
|
||||
const TestChildWidget({ Key? key }) : super(key: key);
|
||||
|
||||
@override
|
||||
TestChildState createState() => TestChildState();
|
||||
@@ -877,7 +875,7 @@ void main() {
|
||||
),
|
||||
);
|
||||
await tester.pumpWidget(table);
|
||||
final RenderObjectElement element = key0.currentContext as RenderObjectElement;
|
||||
final RenderObjectElement element = key0.currentContext! as RenderObjectElement;
|
||||
expect(element, hasAGoodToStringDeep);
|
||||
expect(
|
||||
element.toStringDeep(minLevel: DiagnosticLevel.info),
|
||||
@@ -959,7 +957,7 @@ void main() {
|
||||
testWidgets(
|
||||
'Table widget requires all TableRows to have non-null children',
|
||||
(WidgetTester tester) async {
|
||||
FlutterError error;
|
||||
FlutterError? error;
|
||||
try {
|
||||
await tester.pumpWidget(
|
||||
Directionality(
|
||||
@@ -976,7 +974,7 @@ void main() {
|
||||
error = e;
|
||||
} finally {
|
||||
expect(error, isNotNull);
|
||||
expect(error.toStringDeep(), contains('The children property of TableRow must not be null.'));
|
||||
expect(error!.toStringDeep(), contains('The children property of TableRow must not be null.'));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@TestOn('!chrome') // Flaky on web
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
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/gestures.dart' show PointerDeviceKind;
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -18,7 +16,7 @@ class MockClipboard {
|
||||
|
||||
final bool getDataThrows;
|
||||
|
||||
Object _clipboardData = <String, dynamic>{
|
||||
dynamic _clipboardData = <String, dynamic>{
|
||||
'text': null,
|
||||
};
|
||||
|
||||
@@ -36,16 +34,16 @@ class MockClipboard {
|
||||
}
|
||||
|
||||
void main() {
|
||||
int tapCount;
|
||||
int singleTapUpCount;
|
||||
int singleTapCancelCount;
|
||||
int singleLongTapStartCount;
|
||||
int doubleTapDownCount;
|
||||
int forcePressStartCount;
|
||||
int forcePressEndCount;
|
||||
int dragStartCount;
|
||||
int dragUpdateCount;
|
||||
int dragEndCount;
|
||||
late int tapCount;
|
||||
late int singleTapUpCount;
|
||||
late int singleTapCancelCount;
|
||||
late int singleLongTapStartCount;
|
||||
late int doubleTapDownCount;
|
||||
late int forcePressStartCount;
|
||||
late int forcePressEndCount;
|
||||
late int dragStartCount;
|
||||
late int dragUpdateCount;
|
||||
late int dragEndCount;
|
||||
const Offset forcePressOffset = Offset(400.0, 50.0);
|
||||
|
||||
void _handleTapDown(TapDownDetails details) { tapCount++; }
|
||||
@@ -687,9 +685,9 @@ void main() {
|
||||
|
||||
class FakeTextSelectionGestureDetectorBuilderDelegate implements TextSelectionGestureDetectorBuilderDelegate {
|
||||
FakeTextSelectionGestureDetectorBuilderDelegate({
|
||||
this.editableTextKey,
|
||||
this.forcePressEnabled,
|
||||
this.selectionEnabled,
|
||||
required this.editableTextKey,
|
||||
required this.forcePressEnabled,
|
||||
required this.selectionEnabled,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -703,7 +701,7 @@ class FakeTextSelectionGestureDetectorBuilderDelegate implements TextSelectionGe
|
||||
}
|
||||
|
||||
class FakeEditableText extends EditableText {
|
||||
FakeEditableText({Key key}): super(
|
||||
FakeEditableText({Key? key}): super(
|
||||
key: key,
|
||||
controller: TextEditingController(),
|
||||
focusNode: FocusNode(),
|
||||
@@ -721,7 +719,7 @@ class FakeEditableTextState extends EditableTextState {
|
||||
bool showToolbarCalled = false;
|
||||
|
||||
@override
|
||||
RenderEditable get renderEditable => _editableKey.currentContext.findRenderObject() as RenderEditable;
|
||||
RenderEditable get renderEditable => _editableKey.currentContext!.findRenderObject()! as RenderEditable;
|
||||
|
||||
@override
|
||||
bool showToolbar() {
|
||||
@@ -739,7 +737,7 @@ class FakeEditableTextState extends EditableTextState {
|
||||
class FakeEditable extends LeafRenderObjectWidget {
|
||||
const FakeEditable(
|
||||
this.delegate, {
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
final EditableTextState delegate;
|
||||
|
||||
@@ -769,25 +767,25 @@ class FakeRenderEditable extends RenderEditable {
|
||||
|
||||
bool selectWordsInRangeCalled = false;
|
||||
@override
|
||||
void selectWordsInRange({ @required Offset from, Offset to, @required SelectionChangedCause cause }) {
|
||||
void selectWordsInRange({ required Offset from, Offset? to, required SelectionChangedCause cause }) {
|
||||
selectWordsInRangeCalled = true;
|
||||
}
|
||||
|
||||
bool selectWordEdgeCalled = false;
|
||||
@override
|
||||
void selectWordEdge({ @required SelectionChangedCause cause }) {
|
||||
void selectWordEdge({ required SelectionChangedCause cause }) {
|
||||
selectWordEdgeCalled = true;
|
||||
}
|
||||
|
||||
bool selectPositionAtCalled = false;
|
||||
@override
|
||||
void selectPositionAt({ @required Offset from, Offset to, @required SelectionChangedCause cause }) {
|
||||
void selectPositionAt({ required Offset from, Offset? to, required SelectionChangedCause cause }) {
|
||||
selectPositionAtCalled = true;
|
||||
}
|
||||
|
||||
bool selectWordCalled = false;
|
||||
@override
|
||||
void selectWord({ @required SelectionChangedCause cause }) {
|
||||
void selectWord({ required SelectionChangedCause cause }) {
|
||||
selectWordCalled = 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 'package:flutter/rendering.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter/gestures.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' as ui;
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -127,7 +125,7 @@ void main() {
|
||||
|
||||
final RichText text = tester.firstWidget(find.byType(RichText));
|
||||
expect(text, isNotNull);
|
||||
expect(text.text.style.fontSize, 20.0);
|
||||
expect(text.text.style!.fontSize, 20.0);
|
||||
});
|
||||
|
||||
testWidgets('inline widgets works with ellipsis', (WidgetTester tester) async {
|
||||
@@ -1007,7 +1005,11 @@ void main() {
|
||||
}, semanticsEnabled: true, skip: isBrowser); // Browser semantics have different sizes.
|
||||
}
|
||||
|
||||
Future<void> _pumpTextWidget({ WidgetTester tester, String text, TextOverflow overflow }) {
|
||||
Future<void> _pumpTextWidget({
|
||||
required WidgetTester tester,
|
||||
required String text,
|
||||
required TextOverflow overflow,
|
||||
}) {
|
||||
return tester.pumpWidget(
|
||||
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 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
@@ -29,7 +27,7 @@ void main() {
|
||||
final ContainerLayer containerLayer = ContainerLayer();
|
||||
final PaintingContext paintingContext = PaintingContext(containerLayer, Rect.zero);
|
||||
textureBox.paint(paintingContext, Offset.zero);
|
||||
final Layer layer = containerLayer.lastChild;
|
||||
final Layer layer = containerLayer.lastChild!;
|
||||
expect(layer, isNotNull);
|
||||
final TextureLayer textureLayer = layer as TextureLayer;
|
||||
expect(textureLayer, isNotNull);
|
||||
@@ -58,7 +56,7 @@ void main() {
|
||||
final ContainerLayer containerLayer = ContainerLayer();
|
||||
final PaintingContext paintingContext = PaintingContext(containerLayer, Rect.zero);
|
||||
textureBox.paint(paintingContext, Offset.zero);
|
||||
final Layer layer = containerLayer.lastChild;
|
||||
final Layer layer = containerLayer.lastChild!;
|
||||
expect(layer, isNotNull);
|
||||
final TextureLayer textureLayer = layer as TextureLayer;
|
||||
expect(textureLayer, isNotNull);
|
||||
@@ -86,7 +84,7 @@ void main() {
|
||||
final ContainerLayer containerLayer = ContainerLayer();
|
||||
final PaintingContext paintingContext = PaintingContext(containerLayer, Rect.zero);
|
||||
textureBox.paint(paintingContext, Offset.zero);
|
||||
final Layer layer = containerLayer.lastChild;
|
||||
final Layer layer = containerLayer.lastChild!;
|
||||
expect(layer, isNotNull);
|
||||
final TextureLayer textureLayer = layer as TextureLayer;
|
||||
expect(textureLayer, isNotNull);
|
||||
|
||||
@@ -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/widgets.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -13,7 +11,7 @@ void main() {
|
||||
int outerTickCount = 0;
|
||||
int innerTickCount = 0;
|
||||
|
||||
Widget nestedTickerModes({bool innerEnabled, bool outerEnabled}) {
|
||||
Widget nestedTickerModes({required bool innerEnabled, required bool outerEnabled}) {
|
||||
return Directionality(
|
||||
textDirection: TextDirection.rtl,
|
||||
child: TickerMode(
|
||||
@@ -103,7 +101,7 @@ void main() {
|
||||
}
|
||||
|
||||
class _TickingWidget extends StatefulWidget {
|
||||
const _TickingWidget({this.onTick});
|
||||
const _TickingWidget({required this.onTick});
|
||||
|
||||
final VoidCallback onTick;
|
||||
|
||||
@@ -112,7 +110,7 @@ class _TickingWidget extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _TickingWidgetState extends State<_TickingWidget> with SingleTickerProviderStateMixin {
|
||||
Ticker _ticker;
|
||||
late Ticker _ticker;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
||||
@@ -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/scheduler.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -104,15 +102,15 @@ void main() {
|
||||
child: _SingleTickerTest(key: key),
|
||||
);
|
||||
await tester.pumpWidget(widget);
|
||||
FlutterError error;
|
||||
key.currentState.controller.repeat();
|
||||
FlutterError? error;
|
||||
key.currentState!.controller.repeat();
|
||||
try {
|
||||
key.currentState.dispose();
|
||||
key.currentState!.dispose();
|
||||
} on FlutterError catch (e) {
|
||||
error = e;
|
||||
} finally {
|
||||
expect(error, isNotNull);
|
||||
expect(error.diagnostics.length, 4);
|
||||
expect(error!.diagnostics.length, 4);
|
||||
expect(error.diagnostics[2].level, DiagnosticLevel.hint);
|
||||
expect(
|
||||
error.diagnostics[2].toStringDeep(),
|
||||
@@ -137,7 +135,7 @@ void main() {
|
||||
' created))\n'
|
||||
' The stack trace when the Ticker was actually created was:'
|
||||
));
|
||||
key.currentState.controller.stop();
|
||||
key.currentState!.controller.stop();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -147,15 +145,15 @@ void main() {
|
||||
child: _SingleTickerTest(key: key),
|
||||
);
|
||||
await tester.pumpWidget(widget);
|
||||
FlutterError error;
|
||||
key.currentState.controller.repeat();
|
||||
FlutterError? error;
|
||||
key.currentState!.controller.repeat();
|
||||
try {
|
||||
key.currentState.dispose();
|
||||
key.currentState!.dispose();
|
||||
} on FlutterError catch (e) {
|
||||
error = e;
|
||||
} finally {
|
||||
expect(error, isNotNull);
|
||||
expect(error.diagnostics.length, 4);
|
||||
expect(error!.diagnostics.length, 4);
|
||||
expect(error.diagnostics[2].level, DiagnosticLevel.hint);
|
||||
expect(
|
||||
error.diagnostics[2].toStringDeep(),
|
||||
@@ -180,7 +178,7 @@ void main() {
|
||||
' created))\n'
|
||||
' The stack trace when the Ticker was actually created was:'
|
||||
));
|
||||
key.currentState.controller.stop();
|
||||
key.currentState!.controller.stop();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -190,15 +188,15 @@ void main() {
|
||||
child: _MultipleTickerTest(key: key),
|
||||
);
|
||||
await tester.pumpWidget(widget);
|
||||
FlutterError error;
|
||||
key.currentState.controllers.first.repeat();
|
||||
FlutterError? error;
|
||||
key.currentState!.controllers.first.repeat();
|
||||
try {
|
||||
key.currentState.dispose();
|
||||
key.currentState!.dispose();
|
||||
} on FlutterError catch (e) {
|
||||
error = e;
|
||||
} finally {
|
||||
expect(error, isNotNull);
|
||||
expect(error.diagnostics.length, 4);
|
||||
expect(error!.diagnostics.length, 4);
|
||||
expect(error.diagnostics[2].level, DiagnosticLevel.hint);
|
||||
expect(
|
||||
error.diagnostics[2].toStringDeep(),
|
||||
@@ -223,14 +221,14 @@ void main() {
|
||||
' _MultipleTickerTestState#00000(lifecycle state: created,\n'
|
||||
' tickers: tracking 0 tickers))'
|
||||
));
|
||||
key.currentState.controllers.first.stop();
|
||||
key.currentState!.controllers.first.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
class BoringTickerTest extends StatefulWidget {
|
||||
const BoringTickerTest({ Key key }) : super(key: key);
|
||||
const BoringTickerTest({ Key? key }) : super(key: key);
|
||||
@override
|
||||
_BoringTickerTestState createState() => _BoringTickerTestState();
|
||||
}
|
||||
@@ -241,14 +239,14 @@ class _BoringTickerTestState extends State<BoringTickerTest> with SingleTickerPr
|
||||
}
|
||||
|
||||
class _SingleTickerTest extends StatefulWidget {
|
||||
const _SingleTickerTest({Key key}) : super(key: key);
|
||||
const _SingleTickerTest({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SingleTickerTestState createState() => _SingleTickerTestState();
|
||||
}
|
||||
|
||||
class _SingleTickerTestState extends State<_SingleTickerTest> with SingleTickerProviderStateMixin {
|
||||
AnimationController controller;
|
||||
late AnimationController controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -266,7 +264,7 @@ class _SingleTickerTestState extends State<_SingleTickerTest> with SingleTickerP
|
||||
}
|
||||
|
||||
class _MultipleTickerTest extends StatefulWidget {
|
||||
const _MultipleTickerTest({Key key}) : super(key: key);
|
||||
const _MultipleTickerTest({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_MultipleTickerTestState createState() => _MultipleTickerTestState();
|
||||
|
||||
@@ -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';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -28,18 +26,6 @@ void main() {
|
||||
expect(widget.color, equals(const Color(0xFF00FF00)));
|
||||
});
|
||||
|
||||
testWidgets('should not allow null title or color', (WidgetTester tester) async {
|
||||
expect(() => Title(
|
||||
title: null,
|
||||
color: const Color(0xFF00FF00),
|
||||
child: Container(),
|
||||
), throwsAssertionError);
|
||||
expect(() => Title(
|
||||
color: null,
|
||||
child: Container(),
|
||||
), throwsAssertionError);
|
||||
});
|
||||
|
||||
testWidgets('should not allow non-opaque color', (WidgetTester tester) async {
|
||||
expect(() => Title(
|
||||
color: const Color(0x00000000),
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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 'dart:ui' as ui;
|
||||
|
||||
@@ -255,7 +253,7 @@ void main() {
|
||||
expect(layers.length, 2);
|
||||
// The first transform is from the render view.
|
||||
final TransformLayer layer = layers[1] as TransformLayer;
|
||||
final Matrix4 transform = layer.transform;
|
||||
final Matrix4 transform = layer.transform!;
|
||||
expect(transform.getTranslation(), equals(Vector3(100.0, 75.0, 0.0)));
|
||||
});
|
||||
|
||||
@@ -272,7 +270,7 @@ void main() {
|
||||
expect(layers.length, 2);
|
||||
// The first transform is from the render view.
|
||||
final TransformLayer layer = layers[1] as TransformLayer;
|
||||
final Matrix4 transform = layer.transform;
|
||||
final Matrix4 transform = layer.transform!;
|
||||
expect(transform.storage, <dynamic>[
|
||||
moreOrLessEquals(0.0), 1.0, 0.0, 0.0,
|
||||
-1.0, moreOrLessEquals(0.0), 0.0, 0.0,
|
||||
@@ -327,7 +325,7 @@ void main() {
|
||||
expect(layers.length, 2);
|
||||
// The first transform is from the render view.
|
||||
final TransformLayer layer = layers[1] as TransformLayer;
|
||||
final Matrix4 transform = layer.transform;
|
||||
final Matrix4 transform = layer.transform!;
|
||||
expect(transform.storage, <dynamic>[
|
||||
// These are column-major, not row-major.
|
||||
2.0, 0.0, 0.0, 0.0,
|
||||
@@ -380,8 +378,8 @@ void main() {
|
||||
(WidgetTester tester) async {
|
||||
for (double angle = 0; angle <= math.pi/4; angle += 0.01) {
|
||||
await tester.pumpWidget(RepaintBoundary(child: _generateTransform(true, angle)));
|
||||
final RenderBox renderBox = tester.binding.renderView.child;
|
||||
final OffsetLayer layer = renderBox.debugLayer as OffsetLayer;
|
||||
final RenderBox renderBox = tester.binding.renderView.child!;
|
||||
final OffsetLayer layer = renderBox.debugLayer! as OffsetLayer;
|
||||
final ui.Image imageWithCompositing = await layer.toImage(renderBox.paintBounds);
|
||||
|
||||
await tester.pumpWidget(RepaintBoundary(child: _generateTransform(false, angle)));
|
||||
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user