Skip to content

Commit 756dcc1

Browse files
[go_router] Use leak_tracker_flutter_testing (flutter#6210)
1 parent 6db47f4 commit 756dcc1

17 files changed

+85
-9
lines changed

packages/go_router/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
## NEXT
1+
## 13.2.1
22

3-
* Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
3+
- Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.
4+
- Fixes memory leaks.
45

56
## 13.2.0
67

packages/go_router/example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ version: 3.0.1
44
publish_to: none
55

66
environment:
7-
sdk: ^3.1.0
8-
flutter: ">=3.13.0"
7+
sdk: ^3.2.0
8+
flutter: ">=3.16.0"
99

1010
dependencies:
1111
adaptive_navigation: ^0.0.4

packages/go_router/lib/src/builder.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,13 @@ class _CustomNavigatorState extends State<_CustomNavigator> {
189189
_pages = null;
190190
}
191191

192+
@override
193+
void dispose() {
194+
_controller?.dispose();
195+
_registry.dispose();
196+
super.dispose();
197+
}
198+
192199
void _updatePages(BuildContext context) {
193200
assert(_pages == null);
194201
final List<Page<Object?>> pages = <Page<Object?>>[];

packages/go_router/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
name: go_router
22
description: A declarative router for Flutter based on Navigation 2 supporting
33
deep linking, data-driven routes and more
4-
version: 13.2.0
4+
version: 13.2.1
55
repository: https://github.com/flutter/packages/tree/main/packages/go_router
66
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router%22
77

88
environment:
9-
sdk: ">=3.1.0 <4.0.0"
10-
flutter: ">=3.13.0"
9+
sdk: ">=3.2.0 <4.0.0"
10+
flutter: ">=3.16.0"
1111

1212
dependencies:
1313
collection: ^1.15.0

packages/go_router/test/builder_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ void main() {
371371
),
372372
],
373373
);
374+
addTearDown(goRouter.dispose);
374375

375376
await tester.pumpWidget(MaterialApp.router(
376377
routerConfig: goRouter,

packages/go_router/test/custom_transition_page_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ void main() {
2222
),
2323
],
2424
);
25+
addTearDown(router.dispose);
2526
await tester.pumpWidget(
2627
MaterialApp.router(
2728
routerConfig: router,
@@ -35,6 +36,7 @@ void main() {
3536
(WidgetTester tester) async {
3637
final ValueNotifier<bool> showHomeValueNotifier =
3738
ValueNotifier<bool>(false);
39+
addTearDown(showHomeValueNotifier.dispose);
3840
await tester.pumpWidget(
3941
MaterialApp(
4042
home: ValueListenableBuilder<bool>(
@@ -83,6 +85,7 @@ void main() {
8385
testWidgets('NoTransitionPage does not apply any reverse transition',
8486
(WidgetTester tester) async {
8587
final ValueNotifier<bool> showHomeValueNotifier = ValueNotifier<bool>(true);
88+
addTearDown(showHomeValueNotifier.dispose);
8689
await tester.pumpWidget(
8790
MaterialApp(
8891
home: ValueListenableBuilder<bool>(
@@ -139,6 +142,7 @@ void main() {
139142
),
140143
],
141144
);
145+
addTearDown(router.dispose);
142146
await tester.pumpWidget(MaterialApp.router(routerConfig: router));
143147
expect(find.byKey(homeKey), findsOneWidget);
144148
router.push('/dismissible-modal');
@@ -176,6 +180,7 @@ void main() {
176180
),
177181
],
178182
);
183+
addTearDown(router.dispose);
179184
await tester.pumpWidget(MaterialApp.router(routerConfig: router));
180185
expect(find.byKey(homeKey), findsOneWidget);
181186

packages/go_router/test/delegate_test.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'test_helpers.dart';
1212
Future<GoRouter> createGoRouter(
1313
WidgetTester tester, {
1414
Listenable? refreshListenable,
15+
bool dispose = true,
1516
}) async {
1617
final GoRouter router = GoRouter(
1718
initialLocation: '/',
@@ -25,6 +26,9 @@ Future<GoRouter> createGoRouter(
2526
],
2627
refreshListenable: refreshListenable,
2728
);
29+
if (dispose) {
30+
addTearDown(router.dispose);
31+
}
2832
await tester.pumpWidget(MaterialApp.router(
2933
routerConfig: router,
3034
));
@@ -65,6 +69,7 @@ Future<GoRouter> createGoRouterWithStatefulShellRoute(
6569
], builder: mockStackedShellBuilder),
6670
],
6771
);
72+
addTearDown(router.dispose);
6873
await tester.pumpWidget(MaterialApp.router(
6974
routerConfig: router,
7075
));
@@ -287,6 +292,7 @@ void main() {
287292
GoRoute(path: '/page-1', builder: (_, __) => const SizedBox()),
288293
],
289294
);
295+
addTearDown(goRouter.dispose);
290296
await tester.pumpWidget(
291297
MaterialApp.router(
292298
routerConfig: goRouter,
@@ -369,6 +375,7 @@ void main() {
369375
builder: (_, __) => const SizedBox()),
370376
],
371377
);
378+
addTearDown(goRouter.dispose);
372379
await tester.pumpWidget(
373380
MaterialApp.router(
374381
routerConfig: goRouter,
@@ -418,6 +425,7 @@ void main() {
418425
GoRoute(path: '/page-1', builder: (_, __) => const SizedBox()),
419426
],
420427
);
428+
addTearDown(goRouter.dispose);
421429
await tester.pumpWidget(
422430
MaterialApp.router(
423431
routerConfig: goRouter,
@@ -535,6 +543,7 @@ void main() {
535543
),
536544
],
537545
);
546+
addTearDown(router.dispose);
538547
await tester.pumpWidget(MaterialApp.router(
539548
routerConfig: router,
540549
));
@@ -634,8 +643,13 @@ void main() {
634643
testWidgets('dispose unsubscribes from refreshListenable',
635644
(WidgetTester tester) async {
636645
final FakeRefreshListenable refreshListenable = FakeRefreshListenable();
637-
final GoRouter goRouter =
638-
await createGoRouter(tester, refreshListenable: refreshListenable);
646+
addTearDown(refreshListenable.dispose);
647+
648+
final GoRouter goRouter = await createGoRouter(
649+
tester,
650+
refreshListenable: refreshListenable,
651+
dispose: false,
652+
);
639653
await tester.pumpWidget(Container());
640654
goRouter.dispose();
641655
expect(refreshListenable.unsubscribed, true);

packages/go_router/test/extension_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ void main() {
2626
builder: (_, __) => const SizedBox())
2727
],
2828
);
29+
addTearDown(router.dispose);
2930
await tester.pumpWidget(MaterialApp.router(
3031
routerConfig: router,
3132
));

packages/go_router/test/extra_codec_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ void main() {
3232
return null;
3333
},
3434
);
35+
36+
addTearDown(router.dispose);
3537
final SimpleDependency dependency = SimpleDependency();
3638
addTearDown(() => dependency.dispose());
3739

packages/go_router/test/go_router_test.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,8 @@ void main() {
968968
testWidgets('does not crash when inherited widget changes',
969969
(WidgetTester tester) async {
970970
final ValueNotifier<String> notifier = ValueNotifier<String>('initial');
971+
972+
addTearDown(notifier.dispose);
971973
final List<GoRoute> routes = <GoRoute>[
972974
GoRoute(
973975
path: '/',
@@ -985,6 +987,7 @@ void main() {
985987
final GoRouter router = GoRouter(
986988
routes: routes,
987989
);
990+
addTearDown(router.dispose);
988991
await tester.pumpWidget(
989992
MaterialApp.router(
990993
routerConfig: router,
@@ -3212,6 +3215,7 @@ void main() {
32123215
(WidgetTester tester) async {
32133216
final GoRouterNamedLocationSpy router =
32143217
GoRouterNamedLocationSpy(routes: routes);
3218+
addTearDown(router.dispose);
32153219
await tester.pumpWidget(
32163220
MaterialApp.router(
32173221
routerConfig: router,
@@ -3230,6 +3234,7 @@ void main() {
32303234

32313235
testWidgets('calls [go] on closest GoRouter', (WidgetTester tester) async {
32323236
final GoRouterGoSpy router = GoRouterGoSpy(routes: routes);
3237+
addTearDown(router.dispose);
32333238
await tester.pumpWidget(
32343239
MaterialApp.router(
32353240
routerConfig: router,
@@ -3247,6 +3252,7 @@ void main() {
32473252
testWidgets('calls [goNamed] on closest GoRouter',
32483253
(WidgetTester tester) async {
32493254
final GoRouterGoNamedSpy router = GoRouterGoNamedSpy(routes: routes);
3255+
addTearDown(router.dispose);
32503256
await tester.pumpWidget(
32513257
MaterialApp.router(
32523258
routerConfig: router,
@@ -3268,6 +3274,7 @@ void main() {
32683274
testWidgets('calls [push] on closest GoRouter',
32693275
(WidgetTester tester) async {
32703276
final GoRouterPushSpy router = GoRouterPushSpy(routes: routes);
3277+
addTearDown(router.dispose);
32713278
await tester.pumpWidget(
32723279
MaterialApp.router(
32733280
routerConfig: router,
@@ -3285,6 +3292,7 @@ void main() {
32853292
testWidgets('calls [push] on closest GoRouter and waits for result',
32863293
(WidgetTester tester) async {
32873294
final GoRouterPushSpy router = GoRouterPushSpy(routes: routes);
3295+
addTearDown(router.dispose);
32883296
await tester.pumpWidget(
32893297
MaterialApp.router(
32903298
routeInformationProvider: router.routeInformationProvider,
@@ -3305,6 +3313,7 @@ void main() {
33053313
testWidgets('calls [pushNamed] on closest GoRouter',
33063314
(WidgetTester tester) async {
33073315
final GoRouterPushNamedSpy router = GoRouterPushNamedSpy(routes: routes);
3316+
addTearDown(router.dispose);
33083317
await tester.pumpWidget(
33093318
MaterialApp.router(
33103319
routerConfig: router,
@@ -3326,6 +3335,7 @@ void main() {
33263335
testWidgets('calls [pushNamed] on closest GoRouter and waits for result',
33273336
(WidgetTester tester) async {
33283337
final GoRouterPushNamedSpy router = GoRouterPushNamedSpy(routes: routes);
3338+
addTearDown(router.dispose);
33293339
await tester.pumpWidget(
33303340
MaterialApp.router(
33313341
routeInformationProvider: router.routeInformationProvider,
@@ -3349,6 +3359,7 @@ void main() {
33493359

33503360
testWidgets('calls [pop] on closest GoRouter', (WidgetTester tester) async {
33513361
final GoRouterPopSpy router = GoRouterPopSpy(routes: routes);
3362+
addTearDown(router.dispose);
33523363
await tester.pumpWidget(
33533364
MaterialApp.router(
33543365
routerConfig: router,
@@ -3363,6 +3374,7 @@ void main() {
33633374
testWidgets('calls [pop] on closest GoRouter with result',
33643375
(WidgetTester tester) async {
33653376
final GoRouterPopSpy router = GoRouterPopSpy(routes: routes);
3377+
addTearDown(router.dispose);
33663378
await tester.pumpWidget(
33673379
MaterialApp.router(
33683380
routerConfig: router,
@@ -4315,6 +4327,7 @@ void main() {
43154327
GoRoute(path: '/a', builder: (_, __) => const DummyScreen()),
43164328
],
43174329
);
4330+
addTearDown(router.dispose);
43184331

43194332
await tester.pumpWidget(
43204333
MaterialApp.router(
@@ -4377,6 +4390,7 @@ void main() {
43774390
),
43784391
],
43794392
);
4393+
addTearDown(router.dispose);
43804394

43814395
await tester.pumpWidget(
43824396
MaterialApp.router(
@@ -4443,6 +4457,7 @@ void main() {
44434457
),
44444458
],
44454459
);
4460+
addTearDown(router.dispose);
44464461

44474462
await tester.pumpWidget(
44484463
MaterialApp.router(
@@ -4499,6 +4514,7 @@ void main() {
44994514
),
45004515
],
45014516
);
4517+
addTearDown(router.dispose);
45024518

45034519
await tester.pumpWidget(MaterialApp.router(routerConfig: router));
45044520

@@ -4568,6 +4584,7 @@ void main() {
45684584
),
45694585
],
45704586
);
4587+
addTearDown(router.dispose);
45714588

45724589
await tester.pumpWidget(
45734590
MaterialApp.router(
@@ -4638,6 +4655,7 @@ void main() {
46384655
),
46394656
],
46404657
);
4658+
addTearDown(router.dispose);
46414659

46424660
await tester.pumpWidget(MaterialApp.router(routerConfig: router));
46434661

packages/go_router/test/helpers/error_screen_helpers.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ WidgetTesterCallback testClickingTheButtonRedirectsToRoot({
4242
),
4343
],
4444
);
45+
addTearDown(router.dispose);
4546
await tester.pumpWidget(appRouterBuilder(router));
4647
await tester.tap(buttonFinder);
4748
await tester.pumpAndSettle();

packages/go_router/test/inherited_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void main() {
9797
)
9898
],
9999
);
100+
addTearDown(router.dispose);
100101

101102
await tester.pumpWidget(
102103
MaterialApp.router(

packages/go_router/test/name_case_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ void main() {
2525
),
2626
],
2727
);
28+
addTearDown(router.dispose);
2829

2930
// run MaterialApp, initial screen path is '/' -> ScreenA
3031
await tester.pumpWidget(

packages/go_router/test/parser_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ void main() {
2727
redirectLimit: redirectLimit,
2828
redirect: redirect,
2929
);
30+
addTearDown(router.dispose);
3031
await tester.pumpWidget(MaterialApp.router(
3132
routerConfig: router,
3233
));

0 commit comments

Comments
 (0)