Convert some widgets tests to NNBD (#67782)
Migrating some more widget tests to NNBD.
This commit is contained in:
parent
085f1daa43
commit
ef119187d0
File diff suppressed because it is too large
Load Diff
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.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
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:flutter/widgets.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
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
import 'dart:ui' as ui;
|
import 'dart:ui' as ui;
|
||||||
|
|
||||||
@ -22,21 +20,21 @@ class FadeInImageParts {
|
|||||||
assert(target != null);
|
assert(target != null);
|
||||||
|
|
||||||
final ComponentElement fadeInImageElement;
|
final ComponentElement fadeInImageElement;
|
||||||
final FadeInImageElements placeholder;
|
final FadeInImageElements? placeholder;
|
||||||
final FadeInImageElements target;
|
final FadeInImageElements target;
|
||||||
|
|
||||||
State get state {
|
State? get state {
|
||||||
StatefulElement animatedFadeOutFadeInElement;
|
StatefulElement? animatedFadeOutFadeInElement;
|
||||||
fadeInImageElement.visitChildren((Element child) {
|
fadeInImageElement.visitChildren((Element child) {
|
||||||
expect(animatedFadeOutFadeInElement, isNull);
|
expect(animatedFadeOutFadeInElement, isNull);
|
||||||
animatedFadeOutFadeInElement = child as StatefulElement;
|
animatedFadeOutFadeInElement = child as StatefulElement;
|
||||||
});
|
});
|
||||||
expect(animatedFadeOutFadeInElement, isNotNull);
|
expect(animatedFadeOutFadeInElement, isNotNull);
|
||||||
return animatedFadeOutFadeInElement.state;
|
return animatedFadeOutFadeInElement!.state;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element get semanticsElement {
|
Element? get semanticsElement {
|
||||||
Element result;
|
Element? result;
|
||||||
fadeInImageElement.visitChildren((Element child) {
|
fadeInImageElement.visitChildren((Element child) {
|
||||||
if (child.widget is Semantics)
|
if (child.widget is Semantics)
|
||||||
result = child;
|
result = child;
|
||||||
@ -49,39 +47,39 @@ class FadeInImageElements {
|
|||||||
const FadeInImageElements(this.rawImageElement, this.fadeTransitionElement);
|
const FadeInImageElements(this.rawImageElement, this.fadeTransitionElement);
|
||||||
|
|
||||||
final Element rawImageElement;
|
final Element rawImageElement;
|
||||||
final Element fadeTransitionElement;
|
final Element? fadeTransitionElement;
|
||||||
|
|
||||||
RawImage get rawImage => rawImageElement.widget as RawImage;
|
RawImage get rawImage => rawImageElement.widget as RawImage;
|
||||||
FadeTransition get fadeTransition => fadeTransitionElement?.widget as FadeTransition;
|
FadeTransition? get fadeTransition => fadeTransitionElement?.widget as FadeTransition?;
|
||||||
double get opacity => fadeTransition == null ? 1 : fadeTransition.opacity.value;
|
double get opacity => fadeTransition == null ? 1 : fadeTransition!.opacity.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
class LoadTestImageProvider extends ImageProvider<dynamic> {
|
class LoadTestImageProvider extends ImageProvider<Object> {
|
||||||
LoadTestImageProvider(this.provider);
|
LoadTestImageProvider(this.provider);
|
||||||
|
|
||||||
final ImageProvider provider;
|
final ImageProvider provider;
|
||||||
|
|
||||||
ImageStreamCompleter testLoad(dynamic key, DecoderCallback decode) {
|
ImageStreamCompleter testLoad(Object key, DecoderCallback decode) {
|
||||||
return provider.load(key, decode);
|
return provider.load(key, decode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<dynamic> obtainKey(ImageConfiguration configuration) {
|
Future<Object> obtainKey(ImageConfiguration configuration) {
|
||||||
return null;
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ImageStreamCompleter load(dynamic key, DecoderCallback decode) {
|
ImageStreamCompleter load(Object key, DecoderCallback decode) {
|
||||||
return null;
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FadeInImageParts findFadeInImage(WidgetTester tester) {
|
FadeInImageParts findFadeInImage(WidgetTester tester) {
|
||||||
final List<FadeInImageElements> elements = <FadeInImageElements>[];
|
final List<FadeInImageElements> elements = <FadeInImageElements>[];
|
||||||
final Iterable<Element> rawImageElements = tester.elementList(find.byType(RawImage));
|
final Iterable<Element> rawImageElements = tester.elementList(find.byType(RawImage));
|
||||||
ComponentElement fadeInImageElement;
|
ComponentElement? fadeInImageElement;
|
||||||
for (final Element rawImageElement in rawImageElements) {
|
for (final Element rawImageElement in rawImageElements) {
|
||||||
Element fadeTransitionElement;
|
Element? fadeTransitionElement;
|
||||||
rawImageElement.visitAncestorElements((Element ancestor) {
|
rawImageElement.visitAncestorElements((Element ancestor) {
|
||||||
if (ancestor.widget is FadeTransition) {
|
if (ancestor.widget is FadeTransition) {
|
||||||
fadeTransitionElement = ancestor;
|
fadeTransitionElement = ancestor;
|
||||||
@ -99,10 +97,10 @@ FadeInImageParts findFadeInImage(WidgetTester tester) {
|
|||||||
elements.add(FadeInImageElements(rawImageElement, fadeTransitionElement));
|
elements.add(FadeInImageElements(rawImageElement, fadeTransitionElement));
|
||||||
}
|
}
|
||||||
if (elements.length == 2) {
|
if (elements.length == 2) {
|
||||||
return FadeInImageParts(fadeInImageElement, elements.last, elements.first);
|
return FadeInImageParts(fadeInImageElement!, elements.last, elements.first);
|
||||||
} else {
|
} else {
|
||||||
expect(elements, hasLength(1));
|
expect(elements, hasLength(1));
|
||||||
return FadeInImageParts(fadeInImageElement, null, elements.first);
|
return FadeInImageParts(fadeInImageElement!, null, elements.first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,30 +125,30 @@ Future<void> main() async {
|
|||||||
excludeFromSemantics: true,
|
excludeFromSemantics: true,
|
||||||
));
|
));
|
||||||
|
|
||||||
expect(findFadeInImage(tester).placeholder.rawImage.image, null);
|
expect(findFadeInImage(tester).placeholder!.rawImage.image, null);
|
||||||
expect(findFadeInImage(tester).target.rawImage.image, null);
|
expect(findFadeInImage(tester).target.rawImage.image, null);
|
||||||
|
|
||||||
placeholderProvider.complete();
|
placeholderProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(findFadeInImage(tester).placeholder.rawImage.image.isCloneOf(placeholderImage), true);
|
expect(findFadeInImage(tester).placeholder!.rawImage.image!.isCloneOf(placeholderImage), true);
|
||||||
expect(findFadeInImage(tester).target.rawImage.image, null);
|
expect(findFadeInImage(tester).target.rawImage.image, null);
|
||||||
|
|
||||||
imageProvider.complete();
|
imageProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
for (int i = 0; i < 5; i += 1) {
|
for (int i = 0; i < 5; i += 1) {
|
||||||
final FadeInImageParts parts = findFadeInImage(tester);
|
final FadeInImageParts parts = findFadeInImage(tester);
|
||||||
expect(parts.placeholder.rawImage.image.isCloneOf(placeholderImage), true);
|
expect(parts.placeholder!.rawImage.image!.isCloneOf(placeholderImage), true);
|
||||||
expect(parts.target.rawImage.image.isCloneOf(targetImage), true);
|
expect(parts.target.rawImage.image!.isCloneOf(targetImage), true);
|
||||||
expect(parts.placeholder.opacity, moreOrLessEquals(1 - i / 5));
|
expect(parts.placeholder!.opacity, moreOrLessEquals(1 - i / 5));
|
||||||
expect(parts.target.opacity, 0);
|
expect(parts.target.opacity, 0);
|
||||||
await tester.pump(const Duration(milliseconds: 10));
|
await tester.pump(const Duration(milliseconds: 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 5; i += 1) {
|
for (int i = 0; i < 5; i += 1) {
|
||||||
final FadeInImageParts parts = findFadeInImage(tester);
|
final FadeInImageParts parts = findFadeInImage(tester);
|
||||||
expect(parts.placeholder.rawImage.image.isCloneOf(placeholderImage), true);
|
expect(parts.placeholder!.rawImage.image!.isCloneOf(placeholderImage), true);
|
||||||
expect(parts.target.rawImage.image.isCloneOf(targetImage), true);
|
expect(parts.target.rawImage.image!.isCloneOf(targetImage), true);
|
||||||
expect(parts.placeholder.opacity, 0);
|
expect(parts.placeholder!.opacity, 0);
|
||||||
expect(parts.target.opacity, moreOrLessEquals(i / 5));
|
expect(parts.target.opacity, moreOrLessEquals(i / 5));
|
||||||
await tester.pump(const Duration(milliseconds: 10));
|
await tester.pump(const Duration(milliseconds: 10));
|
||||||
}
|
}
|
||||||
@ -159,7 +157,7 @@ Future<void> main() async {
|
|||||||
placeholder: placeholderProvider,
|
placeholder: placeholderProvider,
|
||||||
image: imageProvider,
|
image: imageProvider,
|
||||||
));
|
));
|
||||||
expect(findFadeInImage(tester).target.rawImage.image.isCloneOf(targetImage), true);
|
expect(findFadeInImage(tester).target.rawImage.image!.isCloneOf(targetImage), true);
|
||||||
expect(findFadeInImage(tester).target.opacity, 1);
|
expect(findFadeInImage(tester).target.opacity, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -174,7 +172,7 @@ Future<void> main() async {
|
|||||||
image: imageProvider,
|
image: imageProvider,
|
||||||
));
|
));
|
||||||
|
|
||||||
expect(findFadeInImage(tester).target.rawImage.image.isCloneOf(targetImage), true);
|
expect(findFadeInImage(tester).target.rawImage.image!.isCloneOf(targetImage), true);
|
||||||
expect(findFadeInImage(tester).placeholder, isNull);
|
expect(findFadeInImage(tester).placeholder, isNull);
|
||||||
expect(findFadeInImage(tester).target.opacity, 1);
|
expect(findFadeInImage(tester).target.opacity, 1);
|
||||||
});
|
});
|
||||||
@ -192,10 +190,10 @@ Future<void> main() async {
|
|||||||
excludeFromSemantics: true,
|
excludeFromSemantics: true,
|
||||||
));
|
));
|
||||||
|
|
||||||
final State state = findFadeInImage(tester).state;
|
final State? state = findFadeInImage(tester).state;
|
||||||
placeholderProvider.complete();
|
placeholderProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(findFadeInImage(tester).placeholder.rawImage.image.isCloneOf(placeholderImage), true);
|
expect(findFadeInImage(tester).placeholder!.rawImage.image!.isCloneOf(placeholderImage), true);
|
||||||
|
|
||||||
await tester.pumpWidget(FadeInImage(
|
await tester.pumpWidget(FadeInImage(
|
||||||
placeholder: secondPlaceholderProvider,
|
placeholder: secondPlaceholderProvider,
|
||||||
@ -207,7 +205,7 @@ Future<void> main() async {
|
|||||||
|
|
||||||
secondPlaceholderProvider.complete();
|
secondPlaceholderProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(findFadeInImage(tester).placeholder.rawImage.image.isCloneOf(replacementImage), true);
|
expect(findFadeInImage(tester).placeholder!.rawImage.image!.isCloneOf(replacementImage), true);
|
||||||
expect(findFadeInImage(tester).state, same(state));
|
expect(findFadeInImage(tester).state, same(state));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -246,7 +244,7 @@ Future<void> main() async {
|
|||||||
excludeFromSemantics: true,
|
excludeFromSemantics: true,
|
||||||
));
|
));
|
||||||
|
|
||||||
final State state = findFadeInImage(tester).state;
|
final State? state = findFadeInImage(tester).state;
|
||||||
placeholderProvider.complete();
|
placeholderProvider.complete();
|
||||||
imageProvider.complete();
|
imageProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
@ -263,15 +261,15 @@ Future<void> main() async {
|
|||||||
secondImageProvider.complete();
|
secondImageProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
|
|
||||||
expect(findFadeInImage(tester).target.rawImage.image.isCloneOf(replacementImage), true);
|
expect(findFadeInImage(tester).target.rawImage.image!.isCloneOf(replacementImage), true);
|
||||||
expect(findFadeInImage(tester).state, same(state));
|
expect(findFadeInImage(tester).state, same(state));
|
||||||
expect(findFadeInImage(tester).placeholder.opacity, moreOrLessEquals(1));
|
expect(findFadeInImage(tester).placeholder!.opacity, moreOrLessEquals(1));
|
||||||
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
||||||
await tester.pump(animationDuration);
|
await tester.pump(animationDuration);
|
||||||
expect(findFadeInImage(tester).placeholder.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).placeholder!.opacity, moreOrLessEquals(0));
|
||||||
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
||||||
await tester.pump(animationDuration);
|
await tester.pump(animationDuration);
|
||||||
expect(findFadeInImage(tester).placeholder.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).placeholder!.opacity, moreOrLessEquals(0));
|
||||||
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(1));
|
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(1));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -287,7 +285,7 @@ Future<void> main() async {
|
|||||||
excludeFromSemantics: true,
|
excludeFromSemantics: true,
|
||||||
));
|
));
|
||||||
|
|
||||||
final State state = findFadeInImage(tester).state;
|
final State? state = findFadeInImage(tester).state;
|
||||||
placeholderProvider.complete();
|
placeholderProvider.complete();
|
||||||
imageProvider.complete();
|
imageProvider.complete();
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
@ -302,10 +300,10 @@ Future<void> main() async {
|
|||||||
));
|
));
|
||||||
|
|
||||||
expect(findFadeInImage(tester).state, same(state));
|
expect(findFadeInImage(tester).state, same(state));
|
||||||
expect(findFadeInImage(tester).placeholder.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).placeholder!.opacity, moreOrLessEquals(0));
|
||||||
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(0));
|
||||||
await tester.pump(animationDuration);
|
await tester.pump(animationDuration);
|
||||||
expect(findFadeInImage(tester).placeholder.opacity, moreOrLessEquals(0));
|
expect(findFadeInImage(tester).placeholder!.opacity, moreOrLessEquals(0));
|
||||||
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(1));
|
expect(findFadeInImage(tester).target.opacity, moreOrLessEquals(1));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -323,12 +321,12 @@ Future<void> main() async {
|
|||||||
);
|
);
|
||||||
|
|
||||||
bool called = false;
|
bool called = false;
|
||||||
final DecoderCallback decode = (Uint8List bytes, {int cacheWidth, int cacheHeight, bool allowUpscaling}) {
|
final DecoderCallback decode = (Uint8List bytes, {int? cacheWidth, int? cacheHeight, bool allowUpscaling = false}) {
|
||||||
expect(cacheWidth, 20);
|
expect(cacheWidth, 20);
|
||||||
expect(cacheHeight, 30);
|
expect(cacheHeight, 30);
|
||||||
expect(allowUpscaling, false);
|
expect(allowUpscaling, false);
|
||||||
called = true;
|
called = true;
|
||||||
return PaintingBinding.instance.instantiateImageCodec(bytes, cacheWidth: cacheWidth, cacheHeight: cacheHeight, allowUpscaling: allowUpscaling);
|
return PaintingBinding.instance!.instantiateImageCodec(bytes, cacheWidth: cacheWidth, cacheHeight: cacheHeight, allowUpscaling: allowUpscaling);
|
||||||
};
|
};
|
||||||
final ImageProvider resizeImage = image.placeholder;
|
final ImageProvider resizeImage = image.placeholder;
|
||||||
expect(image.placeholder, isA<ResizeImage>());
|
expect(image.placeholder, isA<ResizeImage>());
|
||||||
@ -346,12 +344,12 @@ Future<void> main() async {
|
|||||||
);
|
);
|
||||||
|
|
||||||
bool called = false;
|
bool called = false;
|
||||||
final DecoderCallback decode = (Uint8List bytes, {int cacheWidth, int cacheHeight, bool allowUpscaling}) {
|
final DecoderCallback decode = (Uint8List bytes, {int? cacheWidth, int? cacheHeight, bool allowUpscaling = false}) {
|
||||||
expect(cacheWidth, null);
|
expect(cacheWidth, null);
|
||||||
expect(cacheHeight, null);
|
expect(cacheHeight, null);
|
||||||
expect(allowUpscaling, null);
|
expect(allowUpscaling, false);
|
||||||
called = true;
|
called = true;
|
||||||
return PaintingBinding.instance.instantiateImageCodec(bytes, cacheWidth: cacheWidth, cacheHeight: cacheHeight);
|
return PaintingBinding.instance!.instantiateImageCodec(bytes, cacheWidth: cacheWidth, cacheHeight: cacheHeight);
|
||||||
};
|
};
|
||||||
// image.placeholder should be an instance of MemoryImage instead of ResizeImage
|
// image.placeholder should be an instance of MemoryImage instead of ResizeImage
|
||||||
final ImageProvider memoryImage = image.placeholder;
|
final ImageProvider memoryImage = image.placeholder;
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
@ -12,8 +10,8 @@ void main() {
|
|||||||
testWidgets('FadeTransition', (WidgetTester tester) async {
|
testWidgets('FadeTransition', (WidgetTester tester) async {
|
||||||
final DebugPrintCallback oldPrint = debugPrint;
|
final DebugPrintCallback oldPrint = debugPrint;
|
||||||
final List<String> log = <String>[];
|
final List<String> log = <String>[];
|
||||||
debugPrint = (String message, { int wrapWidth }) {
|
debugPrint = (String? message, { int? wrapWidth }) {
|
||||||
log.add(message);
|
log.add(message!);
|
||||||
};
|
};
|
||||||
debugPrintBuildScope = true;
|
debugPrintBuildScope = true;
|
||||||
final AnimationController controller = AnimationController(
|
final AnimationController controller = AnimationController(
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
@ -595,12 +593,11 @@ void main() {
|
|||||||
|
|
||||||
List<Type> getLayers() {
|
List<Type> getLayers() {
|
||||||
final List<Type> layers = <Type>[];
|
final List<Type> layers = <Type>[];
|
||||||
Layer layer = RendererBinding.instance.renderView.debugLayer;
|
Layer? container = RendererBinding.instance!.renderView.debugLayer;
|
||||||
while (layer is ContainerLayer) {
|
while (container is ContainerLayer) {
|
||||||
final ContainerLayer container = layer as ContainerLayer;
|
|
||||||
layers.add(container.runtimeType);
|
layers.add(container.runtimeType);
|
||||||
expect(container.firstChild, same(container.lastChild));
|
expect(container.firstChild, same(container.lastChild));
|
||||||
layer = container.firstChild;
|
container = container.firstChild;
|
||||||
}
|
}
|
||||||
return layers;
|
return layers;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
@ -63,18 +61,6 @@ void main() {
|
|||||||
expect(box.size.width, 100.0);
|
expect(box.size.width, 100.0);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('Can pass null for flex', (WidgetTester tester) async {
|
|
||||||
await tester.pumpWidget(
|
|
||||||
Row(
|
|
||||||
textDirection: TextDirection.ltr,
|
|
||||||
children: const <Widget>[
|
|
||||||
Expanded(flex: null, child: Text('one', textDirection: TextDirection.ltr)),
|
|
||||||
Flexible(flex: null, child: Text('two', textDirection: TextDirection.ltr)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
testWidgets("Doesn't overflow because of floating point accumulated error", (WidgetTester tester) async {
|
testWidgets("Doesn't overflow because of floating point accumulated error", (WidgetTester tester) async {
|
||||||
// both of these cases have failed in the past due to floating point issues
|
// both of these cases have failed in the past due to floating point issues
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
|
@ -2,14 +2,12 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
class TestFlowDelegate extends FlowDelegate {
|
class TestFlowDelegate extends FlowDelegate {
|
||||||
TestFlowDelegate({this.startOffset}) : super(repaint: startOffset);
|
TestFlowDelegate({required this.startOffset}) : super(repaint: startOffset);
|
||||||
|
|
||||||
final Animation<double> startOffset;
|
final Animation<double> startOffset;
|
||||||
|
|
||||||
@ -23,7 +21,7 @@ class TestFlowDelegate extends FlowDelegate {
|
|||||||
double dy = startOffset.value;
|
double dy = startOffset.value;
|
||||||
for (int i = 0; i < context.childCount; ++i) {
|
for (int i = 0; i < context.childCount; ++i) {
|
||||||
context.paintChild(i, transform: Matrix4.translationValues(0.0, dy, 0.0));
|
context.paintChild(i, transform: Matrix4.translationValues(0.0, dy, 0.0));
|
||||||
dy += 0.75 * context.getChildSize(i).height;
|
dy += 0.75 * context.getChildSize(i)!.height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,13 +147,13 @@ void main() {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
ContainerLayer layer = RendererBinding.instance.renderView.debugLayer;
|
ContainerLayer? layer = RendererBinding.instance!.renderView.debugLayer;
|
||||||
while (layer != null && layer is! OpacityLayer)
|
while (layer != null && layer is! OpacityLayer)
|
||||||
layer = layer.firstChild as ContainerLayer;
|
layer = layer.firstChild as ContainerLayer?;
|
||||||
expect(layer, isA<OpacityLayer>());
|
expect(layer, isA<OpacityLayer>());
|
||||||
final OpacityLayer opacityLayer = layer as OpacityLayer;
|
final OpacityLayer? opacityLayer = layer as OpacityLayer?;
|
||||||
expect(opacityLayer.alpha, equals(opacity * 255));
|
expect(opacityLayer!.alpha, equals(opacity * 255));
|
||||||
expect(layer.firstChild, isA<TransformLayer>());
|
expect(layer!.firstChild, isA<TransformLayer>());
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('Flow can set and update clipBehavior', (WidgetTester tester) async {
|
testWidgets('Flow can set and update clipBehavior', (WidgetTester tester) async {
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
@ -18,7 +16,7 @@ void main() {
|
|||||||
final GlobalKey widgetKey = GlobalKey();
|
final GlobalKey widgetKey = GlobalKey();
|
||||||
Future<BuildContext> setupWidget(WidgetTester tester) async {
|
Future<BuildContext> setupWidget(WidgetTester tester) async {
|
||||||
await tester.pumpWidget(Container(key: widgetKey));
|
await tester.pumpWidget(Container(key: widgetKey));
|
||||||
return widgetKey.currentContext;
|
return widgetKey.currentContext!;
|
||||||
}
|
}
|
||||||
|
|
||||||
group(FocusNode, () {
|
group(FocusNode, () {
|
||||||
@ -931,7 +929,7 @@ void main() {
|
|||||||
}, variant: TargetPlatformVariant.all());
|
}, variant: TargetPlatformVariant.all());
|
||||||
testWidgets('Mouse events change initial focus highlight mode on mobile.', (WidgetTester tester) async {
|
testWidgets('Mouse events change initial focus highlight mode on mobile.', (WidgetTester tester) async {
|
||||||
expect(FocusManager.instance.highlightMode, equals(FocusHighlightMode.touch));
|
expect(FocusManager.instance.highlightMode, equals(FocusHighlightMode.touch));
|
||||||
RendererBinding.instance.initMouseTracker(); // Clear out the mouse state.
|
RendererBinding.instance!.initMouseTracker(); // Clear out the mouse state.
|
||||||
final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse, pointer: 0);
|
final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse, pointer: 0);
|
||||||
addTearDown(gesture.removePointer);
|
addTearDown(gesture.removePointer);
|
||||||
await gesture.moveTo(Offset.zero);
|
await gesture.moveTo(Offset.zero);
|
||||||
@ -939,7 +937,7 @@ void main() {
|
|||||||
}, variant: TargetPlatformVariant.mobile());
|
}, variant: TargetPlatformVariant.mobile());
|
||||||
testWidgets('Mouse events change initial focus highlight mode on desktop.', (WidgetTester tester) async {
|
testWidgets('Mouse events change initial focus highlight mode on desktop.', (WidgetTester tester) async {
|
||||||
expect(FocusManager.instance.highlightMode, equals(FocusHighlightMode.traditional));
|
expect(FocusManager.instance.highlightMode, equals(FocusHighlightMode.traditional));
|
||||||
RendererBinding.instance.initMouseTracker(); // Clear out the mouse state.
|
RendererBinding.instance!.initMouseTracker(); // Clear out the mouse state.
|
||||||
final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse, pointer: 0);
|
final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse, pointer: 0);
|
||||||
addTearDown(gesture.removePointer);
|
addTearDown(gesture.removePointer);
|
||||||
await gesture.moveTo(Offset.zero);
|
await gesture.moveTo(Offset.zero);
|
||||||
@ -952,7 +950,7 @@ void main() {
|
|||||||
testWidgets('Events change focus highlight mode.', (WidgetTester tester) async {
|
testWidgets('Events change focus highlight mode.', (WidgetTester tester) async {
|
||||||
await setupWidget(tester);
|
await setupWidget(tester);
|
||||||
int callCount = 0;
|
int callCount = 0;
|
||||||
FocusHighlightMode lastMode;
|
FocusHighlightMode? lastMode;
|
||||||
void handleModeChange(FocusHighlightMode mode) {
|
void handleModeChange(FocusHighlightMode mode) {
|
||||||
lastMode = mode;
|
lastMode = mode;
|
||||||
callCount++;
|
callCount++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user