From 6066d433a59b685e040de087f11afa7dae980e2b Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Tue, 5 Jul 2022 22:31:48 +0600 Subject: [PATCH 1/8] fix: [go_router] Extra parameter is always null in route level redirect callback #106164 https://github.com/flutter/flutter/issues/106164 --- packages/go_router/lib/src/go_route_information_parser.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/go_router/lib/src/go_route_information_parser.dart b/packages/go_router/lib/src/go_route_information_parser.dart index 4fc114999b7..fe43ad86a62 100644 --- a/packages/go_router/lib/src/go_route_information_parser.dart +++ b/packages/go_router/lib/src/go_route_information_parser.dart @@ -250,6 +250,7 @@ class GoRouteInformationParser fullpath: top.fullpath, params: top.decodedParams, queryParams: top.queryParams, + extra: top.extra, ), ), )) { From 22e6193a14eed5bd7f36015ba19ad5706e067fee Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Tue, 5 Jul 2022 22:44:35 +0600 Subject: [PATCH 2/8] fix: version --- packages/go_router/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/go_router/pubspec.yaml b/packages/go_router/pubspec.yaml index f122200e755..422a54c3253 100644 --- a/packages/go_router/pubspec.yaml +++ b/packages/go_router/pubspec.yaml @@ -1,7 +1,7 @@ name: go_router description: A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more -version: 4.1.0 +version: 4.1.1 repository: https://github.com/flutter/packages/tree/main/packages/go_router issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router%22 From b63deed906734808564cfda9e9b8f76e706be7db Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Tue, 5 Jul 2022 22:59:00 +0600 Subject: [PATCH 3/8] fix: changelog --- packages/flutter_image/CHANGELOG.md | 4 ++++ packages/flutter_image/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md index 39e694a9fce..05d523dc470 100644 --- a/packages/flutter_image/CHANGELOG.md +++ b/packages/flutter_image/CHANGELOG.md @@ -4,6 +4,10 @@ * Suppresses more deprecation warnings for changes to Flutter master. * Removes duplicate test from test script. +## 4.1.4 + +- Fixes a bug where calling extra parameter is always null in route level redirect callback + ## 4.1.3 * Suppresses deprecation warnings. diff --git a/packages/flutter_image/pubspec.yaml b/packages/flutter_image/pubspec.yaml index 6e8c3624072..3fa94217583 100644 --- a/packages/flutter_image/pubspec.yaml +++ b/packages/flutter_image/pubspec.yaml @@ -3,7 +3,7 @@ description: > Image utilities for Flutter: improved network providers, effects, etc. repository: https://github.com/flutter/packages/tree/main/packages/flutter_image issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22 -version: 4.1.3 +version: 4.1.4 environment: sdk: ">=2.12.0 <3.0.0" From 51b21bb9a3c25a3c785412ea4118f3f10ec8ee59 Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Tue, 5 Jul 2022 23:09:01 +0600 Subject: [PATCH 4/8] fix: that was a typo --- packages/flutter_image/CHANGELOG.md | 4 ---- packages/go_router/CHANGELOG.md | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md index 05d523dc470..39e694a9fce 100644 --- a/packages/flutter_image/CHANGELOG.md +++ b/packages/flutter_image/CHANGELOG.md @@ -4,10 +4,6 @@ * Suppresses more deprecation warnings for changes to Flutter master. * Removes duplicate test from test script. -## 4.1.4 - -- Fixes a bug where calling extra parameter is always null in route level redirect callback - ## 4.1.3 * Suppresses deprecation warnings. diff --git a/packages/go_router/CHANGELOG.md b/packages/go_router/CHANGELOG.md index 463f23da4ff..c22c1dea379 100644 --- a/packages/go_router/CHANGELOG.md +++ b/packages/go_router/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.1.1 + +- Fixes a bug where calling extra parameter is always null in route level redirect callback + ## 4.1.0 - Adds `bool canPop()` to `GoRouterDelegate`, `GoRouter` and `GoRouterHelper`. From adb1c8416ce6debc63c39c436970b3853b7651ed Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Tue, 5 Jul 2022 23:10:17 +0600 Subject: [PATCH 5/8] fix: That was a typo --- packages/flutter_image/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_image/pubspec.yaml b/packages/flutter_image/pubspec.yaml index 3fa94217583..6e8c3624072 100644 --- a/packages/flutter_image/pubspec.yaml +++ b/packages/flutter_image/pubspec.yaml @@ -3,7 +3,7 @@ description: > Image utilities for Flutter: improved network providers, effects, etc. repository: https://github.com/flutter/packages/tree/main/packages/flutter_image issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22 -version: 4.1.4 +version: 4.1.3 environment: sdk: ">=2.12.0 <3.0.0" From dbbc5a5bb14959b3bf4ad37bfeecb8fdf71793c5 Mon Sep 17 00:00:00 2001 From: semapl3 Date: Sat, 23 Jul 2022 03:18:26 +0600 Subject: [PATCH 6/8] feat: add test https://github.com/flutter/flutter/issues/106164 --- packages/go_router/test/go_router_test.dart | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/packages/go_router/test/go_router_test.dart b/packages/go_router/test/go_router_test.dart index bd7e3e8fb9f..e20d323ec60 100644 --- a/packages/go_router/test/go_router_test.dart +++ b/packages/go_router/test/go_router_test.dart @@ -1165,6 +1165,46 @@ void main() { expect((router.screenFor(matches.first) as ErrorScreen).ex, isNotNull); log.info((router.screenFor(matches.first) as ErrorScreen).ex); }); + + testWidgets('extra not null in redirect', (WidgetTester tester) async { + final List routes = [ + GoRoute( + name: 'home', + path: '/', + builder: (BuildContext context, GoRouterState state) => + const HomeScreen(), + routes: [ + GoRoute( + name: 'login', + path: 'login', + builder: (BuildContext context, GoRouterState state) { + return const LoginScreen(); + }, + redirect: (GoRouterState state) { + expect(state.extra, isNotNull); + return null; + }, + routes: [], + ), + ], + ), + ]; + + final GoRouter router = await _router( + routes, + tester, + redirect: (GoRouterState state) { + if (state.location == '/login') { + expect(state.extra, isNotNull); + } + + return null; + }, + ); + + router.go('/login', extra: 1); + await tester.pump(); + }); }); group('initial location', () { From 75aa2d987be31384f676f5e040bb47909dfb042e Mon Sep 17 00:00:00 2001 From: semapl3 Date: Sat, 23 Jul 2022 03:58:06 +0600 Subject: [PATCH 7/8] fix: after merge --- packages/go_router/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/go_router/CHANGELOG.md b/packages/go_router/CHANGELOG.md index e33ff7df6ce..12396c06363 100644 --- a/packages/go_router/CHANGELOG.md +++ b/packages/go_router/CHANGELOG.md @@ -12,7 +12,7 @@ ## 4.1.1 -- Fixes a bug where calling extra parameter is always null in route level redirect callback +- Fixes a bug where calling namedLocation does not support case-insensitive way. ## 4.1.0 From 5fb70aee3d43101f79f78c4495f7cdea85e1f3f5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-15VMVI4\\1" Date: Sat, 23 Jul 2022 04:19:20 +0600 Subject: [PATCH 8/8] feat: add test, check call redirect --- packages/go_router/CHANGELOG.md | 2 +- packages/go_router/test/go_router_test.dart | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/go_router/CHANGELOG.md b/packages/go_router/CHANGELOG.md index 12396c06363..2678834e407 100644 --- a/packages/go_router/CHANGELOG.md +++ b/packages/go_router/CHANGELOG.md @@ -1,6 +1,6 @@ ## 4.2.2 -- Add test extra parameter +- Fixes a bug where calling extra parameter is always null in route level redirect callback ## 4.2.1 diff --git a/packages/go_router/test/go_router_test.dart b/packages/go_router/test/go_router_test.dart index 9565f2af8f5..5758a580aa4 100644 --- a/packages/go_router/test/go_router_test.dart +++ b/packages/go_router/test/go_router_test.dart @@ -1172,6 +1172,9 @@ void main() { }); testWidgets('extra not null in redirect', (WidgetTester tester) async { + bool isCallTopRedirect = false; + bool isCallRouteRedirect = false; + final List routes = [ GoRoute( name: 'home', @@ -1186,6 +1189,7 @@ void main() { return const LoginScreen(); }, redirect: (GoRouterState state) { + isCallRouteRedirect = true; expect(state.extra, isNotNull); return null; }, @@ -1200,6 +1204,7 @@ void main() { tester, redirect: (GoRouterState state) { if (state.location == '/login') { + isCallTopRedirect = true; expect(state.extra, isNotNull); } @@ -1209,6 +1214,9 @@ void main() { router.go('/login', extra: 1); await tester.pump(); + + expect(isCallTopRedirect, true); + expect(isCallRouteRedirect, true); }); });