Unverified Commit be06151e authored by Kostia Sokolovskyi's avatar Kostia Sokolovskyi Committed by GitHub

Cover some test/widgets tests with leak tracking (#133767)

parent 414bff14
...@@ -4,11 +4,12 @@ ...@@ -4,11 +4,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
import 'semantics_tester.dart'; import 'semantics_tester.dart';
void main() { void main() {
testWidgets('AbsorbPointers do not block siblings', (WidgetTester tester) async { testWidgetsWithLeakTracking('AbsorbPointers do not block siblings', (WidgetTester tester) async {
bool tapped = false; bool tapped = false;
await tester.pumpWidget( await tester.pumpWidget(
Column( Column(
...@@ -29,7 +30,7 @@ void main() { ...@@ -29,7 +30,7 @@ void main() {
}); });
group('AbsorbPointer semantics', () { group('AbsorbPointer semantics', () {
testWidgets('does not change semantics when not absorbing', (WidgetTester tester) async { testWidgetsWithLeakTracking('does not change semantics when not absorbing', (WidgetTester tester) async {
final UniqueKey key = UniqueKey(); final UniqueKey key = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
...@@ -56,7 +57,7 @@ void main() { ...@@ -56,7 +57,7 @@ void main() {
); );
}); });
testWidgets('drops semantics when its ignoreSemantics is true', (WidgetTester tester) async { testWidgetsWithLeakTracking('drops semantics when its ignoreSemantics is true', (WidgetTester tester) async {
final SemanticsTester semantics = SemanticsTester(tester); final SemanticsTester semantics = SemanticsTester(tester);
final UniqueKey key = UniqueKey(); final UniqueKey key = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -75,7 +76,7 @@ void main() { ...@@ -75,7 +76,7 @@ void main() {
semantics.dispose(); semantics.dispose();
}); });
testWidgets('ignores user interactions', (WidgetTester tester) async { testWidgetsWithLeakTracking('ignores user interactions', (WidgetTester tester) async {
final UniqueKey key = UniqueKey(); final UniqueKey key = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
......
...@@ -8,10 +8,11 @@ import 'package:flutter/material.dart'; ...@@ -8,10 +8,11 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
group(ActionDispatcher, () { group(ActionDispatcher, () {
testWidgets('ActionDispatcher invokes actions when asked.', (WidgetTester tester) async { testWidgetsWithLeakTracking('ActionDispatcher invokes actions when asked.', (WidgetTester tester) async {
await tester.pumpWidget(Container()); await tester.pumpWidget(Container());
bool invoked = false; bool invoked = false;
const ActionDispatcher dispatcher = ActionDispatcher(); const ActionDispatcher dispatcher = ActionDispatcher();
...@@ -48,7 +49,7 @@ void main() { ...@@ -48,7 +49,7 @@ void main() {
setUp(clear); setUp(clear);
testWidgets('Actions widget can invoke actions with default dispatcher', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions widget can invoke actions with default dispatcher', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
...@@ -75,7 +76,7 @@ void main() { ...@@ -75,7 +76,7 @@ void main() {
expect(invoked, isTrue); expect(invoked, isTrue);
}); });
testWidgets('Actions widget can invoke actions with default dispatcher and maybeInvoke', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions widget can invoke actions with default dispatcher and maybeInvoke', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
...@@ -102,7 +103,7 @@ void main() { ...@@ -102,7 +103,7 @@ void main() {
expect(invoked, isTrue); expect(invoked, isTrue);
}); });
testWidgets('maybeInvoke returns null when no action is found', (WidgetTester tester) async { testWidgetsWithLeakTracking('maybeInvoke returns null when no action is found', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
...@@ -129,7 +130,7 @@ void main() { ...@@ -129,7 +130,7 @@ void main() {
expect(invoked, isFalse); expect(invoked, isFalse);
}); });
testWidgets('invoke throws when no action is found', (WidgetTester tester) async { testWidgetsWithLeakTracking('invoke throws when no action is found', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
...@@ -156,7 +157,7 @@ void main() { ...@@ -156,7 +157,7 @@ void main() {
expect(invoked, isFalse); expect(invoked, isFalse);
}); });
testWidgets('Actions widget can invoke actions with custom dispatcher', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions widget can invoke actions with custom dispatcher', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
const TestIntent intent = TestIntent(); const TestIntent intent = TestIntent();
...@@ -187,7 +188,7 @@ void main() { ...@@ -187,7 +188,7 @@ void main() {
expect(invokedIntent, equals(intent)); expect(invokedIntent, equals(intent));
}); });
testWidgets('Actions can invoke actions in ancestor dispatcher', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions can invoke actions in ancestor dispatcher', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
const TestIntent intent = TestIntent(); const TestIntent intent = TestIntent();
...@@ -224,7 +225,7 @@ void main() { ...@@ -224,7 +225,7 @@ void main() {
expect(invokedDispatcher.runtimeType, equals(TestDispatcher1)); expect(invokedDispatcher.runtimeType, equals(TestDispatcher1));
}); });
testWidgets("Actions can invoke actions in ancestor dispatcher if a lower one isn't specified", (WidgetTester tester) async { testWidgetsWithLeakTracking("Actions can invoke actions in ancestor dispatcher if a lower one isn't specified", (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
const TestIntent intent = TestIntent(); const TestIntent intent = TestIntent();
...@@ -260,7 +261,7 @@ void main() { ...@@ -260,7 +261,7 @@ void main() {
expect(invokedDispatcher.runtimeType, equals(TestDispatcher1)); expect(invokedDispatcher.runtimeType, equals(TestDispatcher1));
}); });
testWidgets('Actions widget can be found with of', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions widget can be found with of', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
final ActionDispatcher testDispatcher = TestDispatcher1(postInvoke: collect); final ActionDispatcher testDispatcher = TestDispatcher1(postInvoke: collect);
...@@ -277,7 +278,7 @@ void main() { ...@@ -277,7 +278,7 @@ void main() {
expect(dispatcher, equals(testDispatcher)); expect(dispatcher, equals(testDispatcher));
}); });
testWidgets('Action can be found with find', (WidgetTester tester) async { testWidgetsWithLeakTracking('Action can be found with find', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
final ActionDispatcher testDispatcher = TestDispatcher1(postInvoke: collect); final ActionDispatcher testDispatcher = TestDispatcher1(postInvoke: collect);
bool invoked = false; bool invoked = false;
...@@ -324,7 +325,7 @@ void main() { ...@@ -324,7 +325,7 @@ void main() {
expect(Actions.maybeFind<DoNothingIntent>(containerKey.currentContext!), isNull); expect(Actions.maybeFind<DoNothingIntent>(containerKey.currentContext!), isNull);
}); });
testWidgets('FocusableActionDetector keeps track of focus and hover even when disabled.', (WidgetTester tester) async { testWidgetsWithLeakTracking('FocusableActionDetector keeps track of focus and hover even when disabled.', (WidgetTester tester) async {
FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
...@@ -392,9 +393,11 @@ void main() { ...@@ -392,9 +393,11 @@ void main() {
await buildTest(true); await buildTest(true);
expect(hovering, isFalse); expect(hovering, isFalse);
expect(focusing, isFalse); expect(focusing, isFalse);
focusNode.dispose();
}); });
testWidgets('FocusableActionDetector changes mouse cursor when hovered', (WidgetTester tester) async { testWidgetsWithLeakTracking('FocusableActionDetector changes mouse cursor when hovered', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MouseRegion( MouseRegion(
cursor: SystemMouseCursors.forbidden, cursor: SystemMouseCursors.forbidden,
...@@ -427,7 +430,7 @@ void main() { ...@@ -427,7 +430,7 @@ void main() {
expect(RendererBinding.instance.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.forbidden); expect(RendererBinding.instance.mouseTracker.debugDeviceActiveCursor(1), SystemMouseCursors.forbidden);
}); });
testWidgets('Actions.invoke returns the value of Action.invoke', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions.invoke returns the value of Action.invoke', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
final Object sentinel = Object(); final Object sentinel = Object();
bool invoked = false; bool invoked = false;
...@@ -458,7 +461,7 @@ void main() { ...@@ -458,7 +461,7 @@ void main() {
expect(invoked, isTrue); expect(invoked, isTrue);
}); });
testWidgets('ContextAction can return null', (WidgetTester tester) async { testWidgetsWithLeakTracking('ContextAction can return null', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
const TestIntent intent = TestIntent(); const TestIntent intent = TestIntent();
final TestContextAction testAction = TestContextAction(); final TestContextAction testAction = TestContextAction();
...@@ -485,7 +488,7 @@ void main() { ...@@ -485,7 +488,7 @@ void main() {
expect(testAction.capturedContexts.single, containerKey.currentContext); expect(testAction.capturedContexts.single, containerKey.currentContext);
}); });
testWidgets('Disabled actions stop propagation to an ancestor', (WidgetTester tester) async { testWidgetsWithLeakTracking('Disabled actions stop propagation to an ancestor', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked = false; bool invoked = false;
const TestIntent intent = TestIntent(); const TestIntent intent = TestIntent();
...@@ -534,7 +537,7 @@ void main() { ...@@ -534,7 +537,7 @@ void main() {
}); });
group('Listening', () { group('Listening', () {
testWidgets('can listen to enabled state of Actions', (WidgetTester tester) async { testWidgetsWithLeakTracking('can listen to enabled state of Actions', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
bool invoked1 = false; bool invoked1 = false;
bool invoked2 = false; bool invoked2 = false;
...@@ -756,7 +759,11 @@ void main() { ...@@ -756,7 +759,11 @@ void main() {
); );
}); });
testWidgets('FocusableActionDetector keeps track of focus and hover even when disabled.', (WidgetTester tester) async { tearDown(() async {
focusNode.dispose();
});
testWidgetsWithLeakTracking('FocusableActionDetector keeps track of focus and hover even when disabled.', (WidgetTester tester) async {
FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
...@@ -790,7 +797,7 @@ void main() { ...@@ -790,7 +797,7 @@ void main() {
expect(focusing, isFalse); expect(focusing, isFalse);
}); });
testWidgets('FocusableActionDetector shows focus highlight appropriately when focused and disabled', (WidgetTester tester) async { testWidgetsWithLeakTracking('FocusableActionDetector shows focus highlight appropriately when focused and disabled', (WidgetTester tester) async {
FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
...@@ -821,7 +828,7 @@ void main() { ...@@ -821,7 +828,7 @@ void main() {
expect(focusing, isTrue); expect(focusing, isTrue);
}); });
testWidgets('FocusableActionDetector can be used without callbacks', (WidgetTester tester) async { testWidgetsWithLeakTracking('FocusableActionDetector can be used without callbacks', (WidgetTester tester) async {
FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional; FocusManager.instance.highlightStrategy = FocusHighlightStrategy.alwaysTraditional;
final GlobalKey containerKey = GlobalKey(); final GlobalKey containerKey = GlobalKey();
...@@ -855,7 +862,7 @@ void main() { ...@@ -855,7 +862,7 @@ void main() {
expect(focusing, isFalse); expect(focusing, isFalse);
}); });
testWidgets( testWidgetsWithLeakTracking(
'FocusableActionDetector can prevent its descendants from being focusable', 'FocusableActionDetector can prevent its descendants from being focusable',
(WidgetTester tester) async { (WidgetTester tester) async {
final FocusNode buttonNode = FocusNode(debugLabel: 'Test'); final FocusNode buttonNode = FocusNode(debugLabel: 'Test');
...@@ -896,19 +903,22 @@ void main() { ...@@ -896,19 +903,22 @@ void main() {
buttonNode.requestFocus(); buttonNode.requestFocus();
await tester.pump(); await tester.pump();
expect(buttonNode.hasFocus, isFalse); expect(buttonNode.hasFocus, isFalse);
buttonNode.dispose();
}, },
); );
testWidgets( testWidgetsWithLeakTracking(
'FocusableActionDetector can prevent its descendants from being traversable', 'FocusableActionDetector can prevent its descendants from being traversable',
(WidgetTester tester) async { (WidgetTester tester) async {
final FocusNode buttonNode1 = FocusNode(debugLabel: 'Button Node 1'); final FocusNode buttonNode1 = FocusNode(debugLabel: 'Button Node 1');
final FocusNode buttonNode2 = FocusNode(debugLabel: 'Button Node 2'); final FocusNode buttonNode2 = FocusNode(debugLabel: 'Button Node 2');
final FocusNode skipTraversalNode = FocusNode(skipTraversal: true);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: FocusableActionDetector( home: FocusableActionDetector(
focusNode: FocusNode(skipTraversal: true), focusNode: skipTraversalNode,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
ElevatedButton( ElevatedButton(
...@@ -939,7 +949,7 @@ void main() { ...@@ -939,7 +949,7 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: FocusableActionDetector( home: FocusableActionDetector(
focusNode: FocusNode(skipTraversal: true), focusNode: skipTraversalNode,
descendantsAreTraversable: false, descendantsAreTraversable: false,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
...@@ -967,10 +977,14 @@ void main() { ...@@ -967,10 +977,14 @@ void main() {
await tester.pump(); await tester.pump();
expect(buttonNode1.hasFocus, isTrue); expect(buttonNode1.hasFocus, isTrue);
expect(buttonNode2.hasFocus, isFalse); expect(buttonNode2.hasFocus, isFalse);
buttonNode1.dispose();
buttonNode2.dispose();
skipTraversalNode.dispose();
}, },
); );
testWidgets('FocusableActionDetector can exclude Focus semantics', (WidgetTester tester) async { testWidgetsWithLeakTracking('FocusableActionDetector can exclude Focus semantics', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: FocusableActionDetector( home: FocusableActionDetector(
...@@ -1076,7 +1090,7 @@ void main() { ...@@ -1076,7 +1090,7 @@ void main() {
}); });
group('Action subclasses', () { group('Action subclasses', () {
testWidgets('CallbackAction passes correct intent when invoked.', (WidgetTester tester) async { testWidgetsWithLeakTracking('CallbackAction passes correct intent when invoked.', (WidgetTester tester) async {
late Intent passedIntent; late Intent passedIntent;
final TestAction action = TestAction(onInvoke: (Intent intent) { final TestAction action = TestAction(onInvoke: (Intent intent) {
passedIntent = intent; passedIntent = intent;
...@@ -1087,7 +1101,7 @@ void main() { ...@@ -1087,7 +1101,7 @@ void main() {
expect(passedIntent, equals(intent)); expect(passedIntent, equals(intent));
}); });
testWidgets('VoidCallbackAction', (WidgetTester tester) async { testWidgetsWithLeakTracking('VoidCallbackAction', (WidgetTester tester) async {
bool called = false; bool called = false;
void testCallback() { void testCallback() {
called = true; called = true;
...@@ -1097,7 +1111,7 @@ void main() { ...@@ -1097,7 +1111,7 @@ void main() {
action.invoke(intent); action.invoke(intent);
expect(called, isTrue); expect(called, isTrue);
}); });
testWidgets('Base Action class default toKeyEventResult delegates to consumesKey', (WidgetTester tester) async { testWidgetsWithLeakTracking('Base Action class default toKeyEventResult delegates to consumesKey', (WidgetTester tester) async {
expect( expect(
DefaultToKeyEventResultAction(consumesKey: false).toKeyEventResult(const DefaultToKeyEventResultIntent(), null), DefaultToKeyEventResultAction(consumesKey: false).toKeyEventResult(const DefaultToKeyEventResultIntent(), null),
KeyEventResult.skipRemainingHandlers, KeyEventResult.skipRemainingHandlers,
...@@ -1110,7 +1124,7 @@ void main() { ...@@ -1110,7 +1124,7 @@ void main() {
}); });
group('Diagnostics', () { group('Diagnostics', () {
testWidgets('default Intent debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('default Intent debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
// ignore: invalid_use_of_protected_member // ignore: invalid_use_of_protected_member
...@@ -1126,7 +1140,7 @@ void main() { ...@@ -1126,7 +1140,7 @@ void main() {
expect(description, isEmpty); expect(description, isEmpty);
}); });
testWidgets('default Actions debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('default Actions debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
Actions( Actions(
...@@ -1152,7 +1166,7 @@ void main() { ...@@ -1152,7 +1166,7 @@ void main() {
); );
}); });
testWidgets('Actions implements debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('Actions implements debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
Actions( Actions(
...@@ -1191,7 +1205,7 @@ void main() { ...@@ -1191,7 +1205,7 @@ void main() {
invokingContext = null; invokingContext = null;
}); });
testWidgets('Basic usage', (WidgetTester tester) async { testWidgetsWithLeakTracking('Basic usage', (WidgetTester tester) async {
late BuildContext invokingContext2; late BuildContext invokingContext2;
late BuildContext invokingContext3; late BuildContext invokingContext3;
await tester.pumpWidget( await tester.pumpWidget(
...@@ -1256,7 +1270,7 @@ void main() { ...@@ -1256,7 +1270,7 @@ void main() {
expect(invocations, <String>['action1.invoke']); expect(invocations, <String>['action1.invoke']);
}); });
testWidgets('Does not break after use', (WidgetTester tester) async { testWidgetsWithLeakTracking('Does not break after use', (WidgetTester tester) async {
late BuildContext invokingContext2; late BuildContext invokingContext2;
late BuildContext invokingContext3; late BuildContext invokingContext3;
await tester.pumpWidget( await tester.pumpWidget(
...@@ -1323,7 +1337,7 @@ void main() { ...@@ -1323,7 +1337,7 @@ void main() {
]); ]);
}); });
testWidgets('Does not override if not overridable', (WidgetTester tester) async { testWidgetsWithLeakTracking('Does not override if not overridable', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
...@@ -1366,7 +1380,7 @@ void main() { ...@@ -1366,7 +1380,7 @@ void main() {
]); ]);
}); });
testWidgets('The final override controls isEnabled', (WidgetTester tester) async { testWidgetsWithLeakTracking('The final override controls isEnabled', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
...@@ -1453,7 +1467,7 @@ void main() { ...@@ -1453,7 +1467,7 @@ void main() {
expect(invocations, <String>[]); expect(invocations, <String>[]);
}); });
testWidgets('The override can choose to defer isActionEnabled to the overridable', (WidgetTester tester) async { testWidgetsWithLeakTracking('The override can choose to defer isActionEnabled to the overridable', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
...@@ -1543,7 +1557,7 @@ void main() { ...@@ -1543,7 +1557,7 @@ void main() {
]); ]);
}); });
testWidgets('Throws on infinite recursions', (WidgetTester tester) async { testWidgetsWithLeakTracking('Throws on infinite recursions', (WidgetTester tester) async {
late StateSetter setState; late StateSetter setState;
BuildContext? action2LookupContext; BuildContext? action2LookupContext;
await tester.pumpWidget( await tester.pumpWidget(
...@@ -1602,7 +1616,7 @@ void main() { ...@@ -1602,7 +1616,7 @@ void main() {
expect(exception?.toString(), contains('debugAssertIsEnabledMutuallyRecursive')); expect(exception?.toString(), contains('debugAssertIsEnabledMutuallyRecursive'));
}); });
testWidgets('Throws on invoking invalid override', (WidgetTester tester) async { testWidgetsWithLeakTracking('Throws on invoking invalid override', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
...@@ -1640,7 +1654,7 @@ void main() { ...@@ -1640,7 +1654,7 @@ void main() {
); );
}); });
testWidgets('Make an overridable action overridable', (WidgetTester tester) async { testWidgetsWithLeakTracking('Make an overridable action overridable', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
...@@ -1696,7 +1710,7 @@ void main() { ...@@ -1696,7 +1710,7 @@ void main() {
]); ]);
}); });
testWidgets('Overriding Actions can change the intent', (WidgetTester tester) async { testWidgetsWithLeakTracking('Overriding Actions can change the intent', (WidgetTester tester) async {
final List<String> newLogChannel = <String>[]; final List<String> newLogChannel = <String>[];
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
...@@ -1746,7 +1760,7 @@ void main() { ...@@ -1746,7 +1760,7 @@ void main() {
]); ]);
}); });
testWidgets('Override non-context overridable Actions with a ContextAction', (WidgetTester tester) async { testWidgetsWithLeakTracking('Override non-context overridable Actions with a ContextAction', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
...@@ -1799,7 +1813,7 @@ void main() { ...@@ -1799,7 +1813,7 @@ void main() {
expect(LogInvocationContextAction.invokeContext, invokingContext); expect(LogInvocationContextAction.invokeContext, invokingContext);
}); });
testWidgets('Override a ContextAction with a regular Action', (WidgetTester tester) async { testWidgetsWithLeakTracking('Override a ContextAction with a regular Action', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Builder( Builder(
builder: (BuildContext context1) { builder: (BuildContext context1) {
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('Align smoke test', (WidgetTester tester) async { testWidgetsWithLeakTracking('Align smoke test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Align( Align(
alignment: const Alignment(0.50, 0.50), alignment: const Alignment(0.50, 0.50),
...@@ -38,7 +39,7 @@ void main() { ...@@ -38,7 +39,7 @@ void main() {
); );
}); });
testWidgets('Align control test (LTR)', (WidgetTester tester) async { testWidgetsWithLeakTracking('Align control test (LTR)', (WidgetTester tester) async {
await tester.pumpWidget(const Directionality( await tester.pumpWidget(const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Align( child: Align(
...@@ -62,7 +63,7 @@ void main() { ...@@ -62,7 +63,7 @@ void main() {
expect(tester.getBottomRight(find.byType(SizedBox)).dx, 100.0); expect(tester.getBottomRight(find.byType(SizedBox)).dx, 100.0);
}); });
testWidgets('Align control test (RTL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('Align control test (RTL)', (WidgetTester tester) async {
await tester.pumpWidget(const Directionality( await tester.pumpWidget(const Directionality(
textDirection: TextDirection.rtl, textDirection: TextDirection.rtl,
child: Align( child: Align(
...@@ -86,7 +87,7 @@ void main() { ...@@ -86,7 +87,7 @@ void main() {
expect(tester.getBottomRight(find.byType(SizedBox)).dx, 100.0); expect(tester.getBottomRight(find.byType(SizedBox)).dx, 100.0);
}); });
testWidgets('Shrink wraps in finite space', (WidgetTester tester) async { testWidgetsWithLeakTracking('Shrink wraps in finite space', (WidgetTester tester) async {
final GlobalKey alignKey = GlobalKey(); final GlobalKey alignKey = GlobalKey();
await tester.pumpWidget( await tester.pumpWidget(
SingleChildScrollView( SingleChildScrollView(
...@@ -105,7 +106,7 @@ void main() { ...@@ -105,7 +106,7 @@ void main() {
expect(size.height, equals(10.0)); expect(size.height, equals(10.0));
}); });
testWidgets('Align widthFactor', (WidgetTester tester) async { testWidgetsWithLeakTracking('Align widthFactor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -128,7 +129,7 @@ void main() { ...@@ -128,7 +129,7 @@ void main() {
expect(box.size.width, equals(50.0)); expect(box.size.width, equals(50.0));
}); });
testWidgets('Align heightFactor', (WidgetTester tester) async { testWidgetsWithLeakTracking('Align heightFactor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('AnimatedAlign.debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign.debugFillProperties', (WidgetTester tester) async {
const AnimatedAlign box = AnimatedAlign( const AnimatedAlign box = AnimatedAlign(
alignment: Alignment.topCenter, alignment: Alignment.topCenter,
curve: Curves.ease, curve: Curves.ease,
...@@ -15,7 +16,7 @@ void main() { ...@@ -15,7 +16,7 @@ void main() {
expect(box, hasOneLineDescription); expect(box, hasOneLineDescription);
}); });
testWidgets('AnimatedAlign alignment visual-to-directional animation', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign alignment visual-to-directional animation', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -57,7 +58,7 @@ void main() { ...@@ -57,7 +58,7 @@ void main() {
expect(tester.getTopRight(find.byKey(target)), const Offset(800.0, 400.0)); expect(tester.getTopRight(find.byKey(target)), const Offset(800.0, 400.0));
}); });
testWidgets('AnimatedAlign widthFactor', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign widthFactor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -82,7 +83,7 @@ void main() { ...@@ -82,7 +83,7 @@ void main() {
expect(box.size.width, equals(50.0)); expect(box.size.width, equals(50.0));
}); });
testWidgets('AnimatedAlign heightFactor', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign heightFactor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -106,7 +107,7 @@ void main() { ...@@ -106,7 +107,7 @@ void main() {
expect(box.size.height, equals( 50.0)); expect(box.size.height, equals( 50.0));
}); });
testWidgets('AnimatedAlign null height factor', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign null height factor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -130,7 +131,7 @@ void main() { ...@@ -130,7 +131,7 @@ void main() {
expect(box.size, equals(const Size(100.0, 100))); expect(box.size, equals(const Size(100.0, 100)));
}); });
testWidgets('AnimatedAlign null widthFactor', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedAlign null widthFactor', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
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';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('AnimatedContainer.debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer.debugFillProperties', (WidgetTester tester) async {
final AnimatedContainer container = AnimatedContainer( final AnimatedContainer container = AnimatedContainer(
constraints: const BoxConstraints.tightFor(width: 17.0, height: 23.0), constraints: const BoxConstraints.tightFor(width: 17.0, height: 23.0),
decoration: const BoxDecoration(color: Color(0xFF00FF00)), decoration: const BoxDecoration(color: Color(0xFF00FF00)),
...@@ -24,7 +25,7 @@ void main() { ...@@ -24,7 +25,7 @@ void main() {
expect(container, hasOneLineDescription); expect(container, hasOneLineDescription);
}); });
testWidgets('AnimatedContainer control test', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer control test', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
const BoxDecoration decorationA = BoxDecoration( const BoxDecoration decorationA = BoxDecoration(
...@@ -102,7 +103,7 @@ void main() { ...@@ -102,7 +103,7 @@ void main() {
); );
}); });
testWidgets('AnimatedContainer overanimate test', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer overanimate test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
AnimatedContainer( AnimatedContainer(
duration: const Duration(milliseconds: 200), duration: const Duration(milliseconds: 200),
...@@ -139,7 +140,7 @@ void main() { ...@@ -139,7 +140,7 @@ void main() {
expect(tester.binding.transientCallbackCount, 0); expect(tester.binding.transientCallbackCount, 0);
}); });
testWidgets('AnimatedContainer padding visual-to-directional animation', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer padding visual-to-directional animation', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -181,7 +182,7 @@ void main() { ...@@ -181,7 +182,7 @@ void main() {
expect(tester.getTopRight(find.byKey(target)), const Offset(700.0, 0.0)); expect(tester.getTopRight(find.byKey(target)), const Offset(700.0, 0.0));
}); });
testWidgets('AnimatedContainer alignment visual-to-directional animation', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer alignment visual-to-directional animation', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -223,7 +224,7 @@ void main() { ...@@ -223,7 +224,7 @@ void main() {
expect(tester.getTopRight(find.byKey(target)), const Offset(800.0, 400.0)); expect(tester.getTopRight(find.byKey(target)), const Offset(800.0, 400.0));
}); });
testWidgets('Animation rerun', (WidgetTester tester) async { testWidgetsWithLeakTracking('Animation rerun', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Center( Center(
child: AnimatedContainer( child: AnimatedContainer(
...@@ -291,7 +292,7 @@ void main() { ...@@ -291,7 +292,7 @@ void main() {
expect(text.size.height, equals(100.0)); expect(text.size.height, equals(100.0));
}); });
testWidgets('AnimatedContainer sets transformAlignment', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer sets transformAlignment', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -339,7 +340,7 @@ void main() { ...@@ -339,7 +340,7 @@ void main() {
expect(tester.getTopLeft(find.byKey(target)), const Offset(400.0, 300.0)); expect(tester.getTopLeft(find.byKey(target)), const Offset(400.0, 300.0));
}); });
testWidgets('AnimatedContainer sets clipBehavior', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedContainer sets clipBehavior', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
AnimatedContainer( AnimatedContainer(
decoration: const BoxDecoration( decoration: const BoxDecoration(
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('AnimatedCrossFade test', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -61,7 +62,7 @@ void main() { ...@@ -61,7 +62,7 @@ void main() {
expect(box.size.height, equals(150.0)); expect(box.size.height, equals(150.0));
}); });
testWidgets('AnimatedCrossFade test showSecond', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade test showSecond', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -88,7 +89,7 @@ void main() { ...@@ -88,7 +89,7 @@ void main() {
expect(box.size.height, equals(200.0)); expect(box.size.height, equals(200.0));
}); });
testWidgets('AnimatedCrossFade alignment (VISUAL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade alignment (VISUAL)', (WidgetTester tester) async {
final Key firstKey = UniqueKey(); final Key firstKey = UniqueKey();
final Key secondKey = UniqueKey(); final Key secondKey = UniqueKey();
...@@ -146,7 +147,7 @@ void main() { ...@@ -146,7 +147,7 @@ void main() {
expect(box2.localToGlobal(Offset.zero), const Offset(275.0, 175.0)); expect(box2.localToGlobal(Offset.zero), const Offset(275.0, 175.0));
}); });
testWidgets('AnimatedCrossFade alignment (LTR)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade alignment (LTR)', (WidgetTester tester) async {
final Key firstKey = UniqueKey(); final Key firstKey = UniqueKey();
final Key secondKey = UniqueKey(); final Key secondKey = UniqueKey();
...@@ -204,7 +205,7 @@ void main() { ...@@ -204,7 +205,7 @@ void main() {
expect(box2.localToGlobal(Offset.zero), const Offset(275.0, 175.0)); expect(box2.localToGlobal(Offset.zero), const Offset(275.0, 175.0));
}); });
testWidgets('AnimatedCrossFade alignment (RTL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade alignment (RTL)', (WidgetTester tester) async {
final Key firstKey = UniqueKey(); final Key firstKey = UniqueKey();
final Key secondKey = UniqueKey(); final Key secondKey = UniqueKey();
...@@ -274,7 +275,7 @@ void main() { ...@@ -274,7 +275,7 @@ void main() {
); );
} }
testWidgets('AnimatedCrossFade preserves widget state', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade preserves widget state', (WidgetTester tester) async {
await tester.pumpWidget(crossFadeWithWatcher()); await tester.pumpWidget(crossFadeWithWatcher());
_TickerWatchingWidgetState findState() => tester.state(find.byType(_TickerWatchingWidget)); _TickerWatchingWidgetState findState() => tester.state(find.byType(_TickerWatchingWidget));
...@@ -287,7 +288,7 @@ void main() { ...@@ -287,7 +288,7 @@ void main() {
} }
}); });
testWidgets('AnimatedCrossFade switches off TickerMode and semantics on faded out widget', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade switches off TickerMode and semantics on faded out widget', (WidgetTester tester) async {
ExcludeSemantics findSemantics() { ExcludeSemantics findSemantics() {
return tester.widget(find.descendant( return tester.widget(find.descendant(
of: find.byKey(const ValueKey<CrossFadeState>(CrossFadeState.showFirst)), of: find.byKey(const ValueKey<CrossFadeState>(CrossFadeState.showFirst)),
...@@ -317,7 +318,7 @@ void main() { ...@@ -317,7 +318,7 @@ void main() {
expect(findSemantics().excluding, true); expect(findSemantics().excluding, true);
}); });
testWidgets('AnimatedCrossFade.layoutBuilder', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade.layoutBuilder', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -361,7 +362,7 @@ void main() { ...@@ -361,7 +362,7 @@ void main() {
expect(find.text('AAA'), findsNothing); expect(find.text('AAA'), findsNothing);
}); });
testWidgets('AnimatedCrossFade test focus', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade test focus', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Directionality( Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -385,7 +386,7 @@ void main() { ...@@ -385,7 +386,7 @@ void main() {
expect(hiddenNode.hasPrimaryFocus, isFalse); expect(hiddenNode.hasPrimaryFocus, isFalse);
}); });
testWidgets('AnimatedCrossFade bottom child can have focus', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedCrossFade bottom child can have focus', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
Directionality( Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -410,7 +411,7 @@ void main() { ...@@ -410,7 +411,7 @@ void main() {
expect(hiddenNode.hasPrimaryFocus, isTrue); expect(hiddenNode.hasPrimaryFocus, isTrue);
}); });
testWidgets('AnimatedCrossFade second child do not receive touch events', testWidgetsWithLeakTracking('AnimatedCrossFade second child do not receive touch events',
(WidgetTester tester) async { (WidgetTester tester) async {
int numberOfTouchEventNoticed = 0; int numberOfTouchEventNoticed = 0;
......
...@@ -5,10 +5,11 @@ ...@@ -5,10 +5,11 @@
import 'package:flutter/src/foundation/diagnostics.dart'; import 'package:flutter/src/foundation/diagnostics.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';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
// Regression test for https://github.com/flutter/flutter/issues/100451 // Regression test for https://github.com/flutter/flutter/issues/100451
testWidgets('SliverAnimatedGrid.builder respects findChildIndexCallback', (WidgetTester tester) async { testWidgetsWithLeakTracking('SliverAnimatedGrid.builder respects findChildIndexCallback', (WidgetTester tester) async {
bool finderCalled = false; bool finderCalled = false;
int itemCount = 7; int itemCount = 7;
late StateSetter stateSetter; late StateSetter stateSetter;
...@@ -50,7 +51,7 @@ void main() { ...@@ -50,7 +51,7 @@ void main() {
expect(finderCalled, true); expect(finderCalled, true);
}); });
testWidgets('AnimatedGrid', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedGrid', (WidgetTester tester) async {
Widget builder(BuildContext context, int index, Animation<double> animation) { Widget builder(BuildContext context, int index, Animation<double> animation) {
return SizedBox( return SizedBox(
height: 100.0, height: 100.0,
...@@ -132,7 +133,7 @@ void main() { ...@@ -132,7 +133,7 @@ void main() {
}); });
group('SliverAnimatedGrid', () { group('SliverAnimatedGrid', () {
testWidgets('initialItemCount', (WidgetTester tester) async { testWidgetsWithLeakTracking('initialItemCount', (WidgetTester tester) async {
final Map<int, Animation<double>> animations = <int, Animation<double>>{}; final Map<int, Animation<double>> animations = <int, Animation<double>>{};
await tester.pumpWidget( await tester.pumpWidget(
...@@ -170,7 +171,7 @@ void main() { ...@@ -170,7 +171,7 @@ void main() {
expect(animations[1]!.value, 1.0); expect(animations[1]!.value, 1.0);
}); });
testWidgets('insert', (WidgetTester tester) async { testWidgetsWithLeakTracking('insert', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -250,7 +251,7 @@ void main() { ...@@ -250,7 +251,7 @@ void main() {
expect(itemRight(2), 300.0); expect(itemRight(2), 300.0);
}); });
testWidgets('insertAll', (WidgetTester tester) async { testWidgetsWithLeakTracking('insertAll', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -306,7 +307,7 @@ void main() { ...@@ -306,7 +307,7 @@ void main() {
expect(itemRight(1), 200.0); expect(itemRight(1), 200.0);
}); });
testWidgets('remove', (WidgetTester tester) async { testWidgetsWithLeakTracking('remove', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
final List<int> items = <int>[0, 1, 2]; final List<int> items = <int>[0, 1, 2];
...@@ -384,7 +385,7 @@ void main() { ...@@ -384,7 +385,7 @@ void main() {
expect(itemRight(2), 200.0); expect(itemRight(2), 200.0);
}); });
testWidgets('removeAll', (WidgetTester tester) async { testWidgetsWithLeakTracking('removeAll', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
final List<int> items = <int>[0, 1, 2]; final List<int> items = <int>[0, 1, 2];
...@@ -436,7 +437,7 @@ void main() { ...@@ -436,7 +437,7 @@ void main() {
expect(find.text('item 2'), findsNothing); expect(find.text('item 2'), findsNothing);
}); });
testWidgets('works in combination with other slivers', (WidgetTester tester) async { testWidgetsWithLeakTracking('works in combination with other slivers', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -505,7 +506,7 @@ void main() { ...@@ -505,7 +506,7 @@ void main() {
expect(tester.getTopLeft(find.text('item 0')).dx, 0); expect(tester.getTopLeft(find.text('item 0')).dx, 0);
}); });
testWidgets('passes correctly derived index of findChildIndexCallback to the inner SliverChildBuilderDelegate', testWidgetsWithLeakTracking('passes correctly derived index of findChildIndexCallback to the inner SliverChildBuilderDelegate',
(WidgetTester tester) async { (WidgetTester tester) async {
final List<int> items = <int>[0, 1, 2, 3]; final List<int> items = <int>[0, 1, 2, 3];
final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>(); final GlobalKey<SliverAnimatedGridState> listKey = GlobalKey<SliverAnimatedGridState>();
...@@ -573,7 +574,7 @@ void main() { ...@@ -573,7 +574,7 @@ void main() {
}); });
}); });
testWidgets( testWidgetsWithLeakTracking(
'AnimatedGrid.of() and maybeOf called with a context that does not contain AnimatedGrid', 'AnimatedGrid.of() and maybeOf called with a context that does not contain AnimatedGrid',
(WidgetTester tester) async { (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
...@@ -618,7 +619,7 @@ void main() { ...@@ -618,7 +619,7 @@ void main() {
}, },
); );
testWidgets('AnimatedGrid.clipBehavior is forwarded to its inner CustomScrollView', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedGrid.clipBehavior is forwarded to its inner CustomScrollView', (WidgetTester tester) async {
const Clip clipBehavior = Clip.none; const Clip clipBehavior = Clip.none;
await tester.pumpWidget( await tester.pumpWidget(
...@@ -647,7 +648,7 @@ void main() { ...@@ -647,7 +648,7 @@ void main() {
expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).clipBehavior, clipBehavior); expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).clipBehavior, clipBehavior);
}); });
testWidgets('AnimatedGrid applies MediaQuery padding', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedGrid applies MediaQuery padding', (WidgetTester tester) async {
const EdgeInsets padding = EdgeInsets.all(30.0); const EdgeInsets padding = EdgeInsets.all(30.0);
EdgeInsets? innerMediaQueryPadding; EdgeInsets? innerMediaQueryPadding;
await tester.pumpWidget( await tester.pumpWidget(
......
...@@ -7,9 +7,10 @@ import 'dart:ui'; ...@@ -7,9 +7,10 @@ import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('ImageFiltered avoids repainting child as it animates', (WidgetTester tester) async { testWidgetsWithLeakTracking('ImageFiltered avoids repainting child as it animates', (WidgetTester tester) async {
RenderTestObject.paintCount = 0; RenderTestObject.paintCount = 0;
await tester.pumpWidget( await tester.pumpWidget(
ColoredBox( ColoredBox(
......
...@@ -5,10 +5,11 @@ ...@@ -5,10 +5,11 @@
import 'package:flutter/src/foundation/diagnostics.dart'; import 'package:flutter/src/foundation/diagnostics.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';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
// Regression test for https://github.com/flutter/flutter/issues/100451 // Regression test for https://github.com/flutter/flutter/issues/100451
testWidgets('SliverAnimatedList.builder respects findChildIndexCallback', (WidgetTester tester) async { testWidgetsWithLeakTracking('SliverAnimatedList.builder respects findChildIndexCallback', (WidgetTester tester) async {
bool finderCalled = false; bool finderCalled = false;
int itemCount = 7; int itemCount = 7;
late StateSetter stateSetter; late StateSetter stateSetter;
...@@ -47,7 +48,7 @@ void main() { ...@@ -47,7 +48,7 @@ void main() {
expect(finderCalled, true); expect(finderCalled, true);
}); });
testWidgets('AnimatedList', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedList', (WidgetTester tester) async {
Widget builder(BuildContext context, int index, Animation<double> animation) { Widget builder(BuildContext context, int index, Animation<double> animation) {
return SizedBox( return SizedBox(
height: 100.0, height: 100.0,
...@@ -126,7 +127,7 @@ void main() { ...@@ -126,7 +127,7 @@ void main() {
}); });
group('SliverAnimatedList', () { group('SliverAnimatedList', () {
testWidgets('initialItemCount', (WidgetTester tester) async { testWidgetsWithLeakTracking('initialItemCount', (WidgetTester tester) async {
final Map<int, Animation<double>> animations = <int, Animation<double>>{}; final Map<int, Animation<double>> animations = <int, Animation<double>>{};
await tester.pumpWidget( await tester.pumpWidget(
...@@ -159,7 +160,7 @@ void main() { ...@@ -159,7 +160,7 @@ void main() {
expect(animations[1]!.value, 1.0); expect(animations[1]!.value, 1.0);
}); });
testWidgets('insert', (WidgetTester tester) async { testWidgetsWithLeakTracking('insert', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -245,7 +246,7 @@ void main() { ...@@ -245,7 +246,7 @@ void main() {
}); });
// Test for insertAllItems with SliverAnimatedList // Test for insertAllItems with SliverAnimatedList
testWidgets('insertAll', (WidgetTester tester) async { testWidgetsWithLeakTracking('insertAll', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -302,7 +303,7 @@ void main() { ...@@ -302,7 +303,7 @@ void main() {
}); });
// Test for removeAllItems with SliverAnimatedList // Test for removeAllItems with SliverAnimatedList
testWidgets('remove', (WidgetTester tester) async { testWidgetsWithLeakTracking('remove', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
final List<int> items = <int>[0, 1, 2]; final List<int> items = <int>[0, 1, 2];
...@@ -379,7 +380,7 @@ void main() { ...@@ -379,7 +380,7 @@ void main() {
}); });
// Test for removeAllItems with SliverAnimatedList // Test for removeAllItems with SliverAnimatedList
testWidgets('removeAll', (WidgetTester tester) async { testWidgetsWithLeakTracking('removeAll', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
final List<int> items = <int>[0, 1, 2]; final List<int> items = <int>[0, 1, 2];
...@@ -429,7 +430,7 @@ void main() { ...@@ -429,7 +430,7 @@ void main() {
expect(find.text('item 2'), findsNothing); expect(find.text('item 2'), findsNothing);
}); });
testWidgets('works in combination with other slivers', (WidgetTester tester) async { testWidgetsWithLeakTracking('works in combination with other slivers', (WidgetTester tester) async {
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -494,7 +495,7 @@ void main() { ...@@ -494,7 +495,7 @@ void main() {
expect(tester.getTopLeft(find.text('item 0')).dy, 200); expect(tester.getTopLeft(find.text('item 0')).dy, 200);
}); });
testWidgets('passes correctly derived index of findChildIndexCallback to the inner SliverChildBuilderDelegate', (WidgetTester tester) async { testWidgetsWithLeakTracking('passes correctly derived index of findChildIndexCallback to the inner SliverChildBuilderDelegate', (WidgetTester tester) async {
final List<int> items = <int>[0, 1, 2, 3]; final List<int> items = <int>[0, 1, 2, 3];
final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>(); final GlobalKey<SliverAnimatedListState> listKey = GlobalKey<SliverAnimatedListState>();
...@@ -556,7 +557,7 @@ void main() { ...@@ -556,7 +557,7 @@ void main() {
}); });
}); });
testWidgets( testWidgetsWithLeakTracking(
'AnimatedList.of() and maybeOf called with a context that does not contain AnimatedList', 'AnimatedList.of() and maybeOf called with a context that does not contain AnimatedList',
(WidgetTester tester) async { (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
...@@ -601,7 +602,7 @@ void main() { ...@@ -601,7 +602,7 @@ void main() {
}, },
); );
testWidgets('AnimatedList.clipBehavior is forwarded to its inner CustomScrollView', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedList.clipBehavior is forwarded to its inner CustomScrollView', (WidgetTester tester) async {
const Clip clipBehavior = Clip.none; const Clip clipBehavior = Clip.none;
await tester.pumpWidget( await tester.pumpWidget(
...@@ -625,7 +626,7 @@ void main() { ...@@ -625,7 +626,7 @@ void main() {
expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).clipBehavior, clipBehavior); expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).clipBehavior, clipBehavior);
}); });
testWidgets('AnimatedList.shrinkwrap is forwarded to its inner CustomScrollView', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedList.shrinkwrap is forwarded to its inner CustomScrollView', (WidgetTester tester) async {
// Regression test for https://github.com/flutter/flutter/issues/115040 // Regression test for https://github.com/flutter/flutter/issues/115040
final ScrollController controller = ScrollController(); final ScrollController controller = ScrollController();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -650,7 +651,7 @@ void main() { ...@@ -650,7 +651,7 @@ void main() {
expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).shrinkWrap, true); expect(tester.widget<CustomScrollView>(find.byType(CustomScrollView)).shrinkWrap, true);
}); });
testWidgets('AnimatedList applies MediaQuery padding', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedList applies MediaQuery padding', (WidgetTester tester) async {
const EdgeInsets padding = EdgeInsets.all(30.0); const EdgeInsets padding = EdgeInsets.all(30.0);
EdgeInsets? innerMediaQueryPadding; EdgeInsets? innerMediaQueryPadding;
await tester.pumpWidget( await tester.pumpWidget(
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('RenderAnimatedOpacityMixin does not drop layer when animating to 1', (WidgetTester tester) async { testWidgetsWithLeakTracking('RenderAnimatedOpacityMixin does not drop layer when animating to 1', (WidgetTester tester) async {
RenderTestObject.paintCount = 0; RenderTestObject.paintCount = 0;
final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1)); final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1));
final Tween<double> opacityTween = Tween<double>(begin: 0, end: 1); final Tween<double> opacityTween = Tween<double>(begin: 0, end: 1);
...@@ -40,7 +41,7 @@ void main() { ...@@ -40,7 +41,7 @@ void main() {
expect(RenderTestObject.paintCount, 1); expect(RenderTestObject.paintCount, 1);
}); });
testWidgets('RenderAnimatedOpacityMixin avoids repainting child as it animates', (WidgetTester tester) async { testWidgetsWithLeakTracking('RenderAnimatedOpacityMixin avoids repainting child as it animates', (WidgetTester tester) async {
RenderTestObject.paintCount = 0; RenderTestObject.paintCount = 0;
final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1)); final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1));
final Tween<double> opacityTween = Tween<double>(begin: 0, end: 0.99); // Layer is dropped at 1 final Tween<double> opacityTween = Tween<double>(begin: 0, end: 0.99); // Layer is dropped at 1
...@@ -73,7 +74,7 @@ void main() { ...@@ -73,7 +74,7 @@ void main() {
expect(RenderTestObject.paintCount, 1); expect(RenderTestObject.paintCount, 1);
}); });
testWidgets('RenderAnimatedOpacityMixin allows opacity layer to be disposed when animating to 0 opacity', (WidgetTester tester) async { testWidgetsWithLeakTracking('RenderAnimatedOpacityMixin allows opacity layer to be disposed when animating to 0 opacity', (WidgetTester tester) async {
RenderTestObject.paintCount = 0; RenderTestObject.paintCount = 0;
final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1)); final AnimationController controller = AnimationController(vsync: const TestVSync(), duration: const Duration(seconds: 1));
final Tween<double> opacityTween = Tween<double>(begin: 0.99, end: 0); final Tween<double> opacityTween = Tween<double>(begin: 0.99, end: 0);
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('AnimatedPadding.debugFillProperties', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPadding.debugFillProperties', (WidgetTester tester) async {
final AnimatedPadding padding = AnimatedPadding( final AnimatedPadding padding = AnimatedPadding(
padding: const EdgeInsets.all(7.0), padding: const EdgeInsets.all(7.0),
curve: Curves.ease, curve: Curves.ease,
...@@ -16,7 +17,7 @@ void main() { ...@@ -16,7 +17,7 @@ void main() {
expect(padding, hasOneLineDescription); expect(padding, hasOneLineDescription);
}); });
testWidgets('AnimatedPadding padding visual-to-directional animation', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPadding padding visual-to-directional animation', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
...@@ -58,7 +59,7 @@ void main() { ...@@ -58,7 +59,7 @@ void main() {
expect(tester.getTopRight(find.byKey(target)), const Offset(700.0, 0.0)); expect(tester.getTopRight(find.byKey(target)), const Offset(700.0, 0.0));
}); });
testWidgets('AnimatedPadding animated padding clamped to positive values', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPadding animated padding clamped to positive values', (WidgetTester tester) async {
final Key target = UniqueKey(); final Key target = UniqueKey();
await tester.pumpWidget( await tester.pumpWidget(
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
void main() { void main() {
testWidgets('AnimatedPositioned.fromRect control test', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositioned.fromRect control test', (WidgetTester tester) async {
final AnimatedPositioned positioned = AnimatedPositioned.fromRect( final AnimatedPositioned positioned = AnimatedPositioned.fromRect(
rect: const Rect.fromLTWH(7.0, 5.0, 12.0, 16.0), rect: const Rect.fromLTWH(7.0, 5.0, 12.0, 16.0),
duration: const Duration(milliseconds: 200), duration: const Duration(milliseconds: 200),
...@@ -20,7 +21,7 @@ void main() { ...@@ -20,7 +21,7 @@ void main() {
expect(positioned, hasOneLineDescription); expect(positioned, hasOneLineDescription);
}); });
testWidgets('AnimatedPositioned - basics (VISUAL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositioned - basics (VISUAL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -102,7 +103,7 @@ void main() { ...@@ -102,7 +103,7 @@ void main() {
); );
}); });
testWidgets('AnimatedPositionedDirectional - basics (LTR)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - basics (LTR)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -188,7 +189,7 @@ void main() { ...@@ -188,7 +189,7 @@ void main() {
); );
}); });
testWidgets('AnimatedPositionedDirectional - basics (RTL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - basics (RTL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -274,7 +275,7 @@ void main() { ...@@ -274,7 +275,7 @@ void main() {
); );
}); });
testWidgets('AnimatedPositioned - interrupted animation (VISUAL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositioned - interrupted animation (VISUAL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -357,7 +358,7 @@ void main() { ...@@ -357,7 +358,7 @@ void main() {
expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0))); expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0)));
}); });
testWidgets('AnimatedPositioned - switching variables (VISUAL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositioned - switching variables (VISUAL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -416,7 +417,7 @@ void main() { ...@@ -416,7 +417,7 @@ void main() {
expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0))); expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0)));
}); });
testWidgets('AnimatedPositionedDirectional - interrupted animation (LTR)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - interrupted animation (LTR)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -505,7 +506,7 @@ void main() { ...@@ -505,7 +506,7 @@ void main() {
expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0))); expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(200.0, 200.0)));
}); });
testWidgets('AnimatedPositionedDirectional - switching variables (LTR)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - switching variables (LTR)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -568,7 +569,7 @@ void main() { ...@@ -568,7 +569,7 @@ void main() {
expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0))); expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(350.0, 150.0)));
}); });
testWidgets('AnimatedPositionedDirectional - interrupted animation (RTL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - interrupted animation (RTL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
...@@ -657,7 +658,7 @@ void main() { ...@@ -657,7 +658,7 @@ void main() {
expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(600.0, 200.0))); expect(box.localToGlobal(box.size.center(Offset.zero)), equals(const Offset(600.0, 200.0)));
}); });
testWidgets('AnimatedPositionedDirectional - switching variables (RTL)', (WidgetTester tester) async { testWidgetsWithLeakTracking('AnimatedPositionedDirectional - switching variables (RTL)', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
RenderBox box; RenderBox box;
......
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