mirror of
https://github.com/flutter/packages.git
synced 2025-07-04 09:38:17 +08:00
[go_router] Retain query parameter during refresh and first redirect (#5276)
Fixes https://github.com/flutter/flutter/issues/137513
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
## 12.1.1
|
||||||
|
|
||||||
|
- Retains query parameters during refresh and first redirect.
|
||||||
|
|
||||||
## 12.1.0
|
## 12.1.0
|
||||||
|
|
||||||
- Adds an ability to add a custom codec for serializing/deserializing extra.
|
- Adds an ability to add a custom codec for serializing/deserializing extra.
|
||||||
|
@ -531,10 +531,18 @@ class GoRouter implements RouterConfig<RouteMatchList> {
|
|||||||
// verified by assert() during the initialization.
|
// verified by assert() during the initialization.
|
||||||
return initialLocation!;
|
return initialLocation!;
|
||||||
}
|
}
|
||||||
final Uri platformDefaultUri =
|
Uri platformDefaultUri = Uri.parse(
|
||||||
Uri.parse(WidgetsBinding.instance.platformDispatcher.defaultRouteName);
|
WidgetsBinding.instance.platformDispatcher.defaultRouteName,
|
||||||
final String platformDefault =
|
);
|
||||||
platformDefaultUri.path.isEmpty ? '/' : platformDefaultUri.path;
|
if (platformDefaultUri.hasEmptyPath) {
|
||||||
|
// TODO(chunhtai): Clean up this once `RouteInformation.uri` is available
|
||||||
|
// in packages repo.
|
||||||
|
platformDefaultUri = Uri(
|
||||||
|
path: '/',
|
||||||
|
queryParameters: platformDefaultUri.queryParameters,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
final String platformDefault = platformDefaultUri.toString();
|
||||||
if (initialLocation == null) {
|
if (initialLocation == null) {
|
||||||
return platformDefault;
|
return platformDefault;
|
||||||
} else if (platformDefault == '/') {
|
} else if (platformDefault == '/') {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: go_router
|
name: go_router
|
||||||
description: A declarative router for Flutter based on Navigation 2 supporting
|
description: A declarative router for Flutter based on Navigation 2 supporting
|
||||||
deep linking, data-driven routes and more
|
deep linking, data-driven routes and more
|
||||||
version: 12.1.0
|
version: 12.1.1
|
||||||
repository: https://github.com/flutter/packages/tree/main/packages/go_router
|
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
|
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router%22
|
||||||
|
|
||||||
|
@ -2503,6 +2503,21 @@ void main() {
|
|||||||
TestWidgetsFlutterBinding.instance.platformDispatcher
|
TestWidgetsFlutterBinding.instance.platformDispatcher
|
||||||
.clearDefaultRouteNameTestValue();
|
.clearDefaultRouteNameTestValue();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
'When platformDispatcher.defaultRouteName is deep-link Uri with '
|
||||||
|
'scheme, authority, no path, and query parameters',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
TestWidgetsFlutterBinding.instance.platformDispatcher
|
||||||
|
.defaultRouteNameTestValue = 'https://domain.com?param=1';
|
||||||
|
final GoRouter router = await createRouter(
|
||||||
|
routes,
|
||||||
|
tester,
|
||||||
|
);
|
||||||
|
expect(router.routeInformationProvider.value.uri.toString(), '/?param=1');
|
||||||
|
TestWidgetsFlutterBinding.instance.platformDispatcher
|
||||||
|
.clearDefaultRouteNameTestValue();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
group('params', () {
|
group('params', () {
|
||||||
|
Reference in New Issue
Block a user