[go_router_builder] Support go_router v7 (#3858)
https://github.com/flutter/packages/pull/3819
Fixed go_router_builder to generate code for go_router v7.0.0.
diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md
index a7414a8..304b579 100644
--- a/packages/go_router_builder/CHANGELOG.md
+++ b/packages/go_router_builder/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.0
+
+* Updates the documentation to go_router v7.0.0.
+* Bumps go_router version in example folder to v7.0.0.
+
## 1.2.2
* Supports returning value in generated `push` method. [go_router CHANGELOG](https://github.com/flutter/packages/blob/main/packages/go_router/CHANGELOG.md#650)
diff --git a/packages/go_router_builder/README.md b/packages/go_router_builder/README.md
index 6632625..aa1ef33 100644
--- a/packages/go_router_builder/README.md
+++ b/packages/go_router_builder/README.md
@@ -8,12 +8,12 @@
```yaml
dependencies:
# ...along with your other dependencies
- go_router: ^3.1.0
+ go_router: ^7.0.0
dev_dependencies:
# ...along with your other dev-dependencies
build_runner: ^2.0.0
- go_router_builder: ^1.0.0
+ go_router_builder: ^2.0.0
```
### Source code
@@ -46,7 +46,7 @@
in a URI format into one or more page builders, each that require zero or more
arguments that are passed as path and query parameters as part of the location.
`go_router` does a good job of making the path and query parameters available
-via the `params` and `queryParams` properties of the `GoRouterState` object, but
+via the `pathParameters` and `queryParameters` properties of the `GoRouterState` object, but
often the page builder must first parse the parameters into types that aren't
`String`s, e.g.
@@ -55,7 +55,7 @@
path: ':authorId',
builder: (context, state) {
// require the authorId to be present and be an integer
- final authorId = int.parse(state.params['authorId']!);
+ final authorId = int.parse(state.pathParameters['authorId']!);
return AuthorDetailsScreen(authorId: authorId);
},
),
@@ -258,8 +258,8 @@
```dart
redirect: (state) {
final loggedIn = loginInfo.loggedIn;
- final loggingIn = state.subloc == LoginRoute().location;
- if( !loggedIn && !loggingIn ) return LoginRoute(from: state.subloc).location;
+ final loggingIn = state.matchedLocation == LoginRoute().location;
+ if( !loggedIn && !loggingIn ) return LoginRoute(from: state.matchedLocation).location;
if( loggedIn && loggingIn ) return HomeRoute().location;
return null;
}
@@ -280,7 +280,7 @@
## Type conversions
The code generator can convert simple types like `int` and `enum` to/from the
-`String` type of the underlying params:
+`String` type of the underlying pathParameters:
```dart
enum BookKind { all, popular, recent }
diff --git a/packages/go_router_builder/example/lib/all_types.g.dart b/packages/go_router_builder/example/lib/all_types.g.dart
index 7cf692f..8f3add3 100644
--- a/packages/go_router_builder/example/lib/all_types.g.dart
+++ b/packages/go_router_builder/example/lib/all_types.g.dart
@@ -89,9 +89,10 @@
extension $BigIntRouteExtension on BigIntRoute {
static BigIntRoute _fromState(GoRouterState state) => BigIntRoute(
- requiredBigIntField: BigInt.parse(state.params['requiredBigIntField']!),
- bigIntField:
- _$convertMapValue('big-int-field', state.queryParams, BigInt.parse),
+ requiredBigIntField:
+ BigInt.parse(state.pathParameters['requiredBigIntField']!),
+ bigIntField: _$convertMapValue(
+ 'big-int-field', state.queryParameters, BigInt.parse),
);
String get location => GoRouteData.$location(
@@ -111,12 +112,13 @@
extension $BoolRouteExtension on BoolRoute {
static BoolRoute _fromState(GoRouterState state) => BoolRoute(
- requiredBoolField: _$boolConverter(state.params['requiredBoolField']!),
- boolField:
- _$convertMapValue('bool-field', state.queryParams, _$boolConverter),
+ requiredBoolField:
+ _$boolConverter(state.pathParameters['requiredBoolField']!),
+ boolField: _$convertMapValue(
+ 'bool-field', state.queryParameters, _$boolConverter),
boolFieldWithDefaultValue: _$convertMapValue(
'bool-field-with-default-value',
- state.queryParams,
+ state.queryParameters,
_$boolConverter) ??
true,
);
@@ -142,9 +144,9 @@
extension $DateTimeRouteExtension on DateTimeRoute {
static DateTimeRoute _fromState(GoRouterState state) => DateTimeRoute(
requiredDateTimeField:
- DateTime.parse(state.params['requiredDateTimeField']!),
+ DateTime.parse(state.pathParameters['requiredDateTimeField']!),
dateTimeField: _$convertMapValue(
- 'date-time-field', state.queryParams, DateTime.parse),
+ 'date-time-field', state.queryParameters, DateTime.parse),
);
String get location => GoRouteData.$location(
@@ -165,12 +167,13 @@
extension $DoubleRouteExtension on DoubleRoute {
static DoubleRoute _fromState(GoRouterState state) => DoubleRoute(
- requiredDoubleField: double.parse(state.params['requiredDoubleField']!),
- doubleField:
- _$convertMapValue('double-field', state.queryParams, double.parse),
+ requiredDoubleField:
+ double.parse(state.pathParameters['requiredDoubleField']!),
+ doubleField: _$convertMapValue(
+ 'double-field', state.queryParameters, double.parse),
doubleFieldWithDefaultValue: _$convertMapValue(
'double-field-with-default-value',
- state.queryParams,
+ state.queryParameters,
double.parse) ??
1.0,
);
@@ -195,10 +198,13 @@
extension $IntRouteExtension on IntRoute {
static IntRoute _fromState(GoRouterState state) => IntRoute(
- requiredIntField: int.parse(state.params['requiredIntField']!),
- intField: _$convertMapValue('int-field', state.queryParams, int.parse),
+ requiredIntField: int.parse(state.pathParameters['requiredIntField']!),
+ intField:
+ _$convertMapValue('int-field', state.queryParameters, int.parse),
intFieldWithDefaultValue: _$convertMapValue(
- 'int-field-with-default-value', state.queryParams, int.parse) ??
+ 'int-field-with-default-value',
+ state.queryParameters,
+ int.parse) ??
1,
);
@@ -221,10 +227,13 @@
extension $NumRouteExtension on NumRoute {
static NumRoute _fromState(GoRouterState state) => NumRoute(
- requiredNumField: num.parse(state.params['requiredNumField']!),
- numField: _$convertMapValue('num-field', state.queryParams, num.parse),
+ requiredNumField: num.parse(state.pathParameters['requiredNumField']!),
+ numField:
+ _$convertMapValue('num-field', state.queryParameters, num.parse),
numFieldWithDefaultValue: _$convertMapValue(
- 'num-field-with-default-value', state.queryParams, num.parse) ??
+ 'num-field-with-default-value',
+ state.queryParameters,
+ num.parse) ??
1,
);
@@ -248,12 +257,12 @@
extension $EnumRouteExtension on EnumRoute {
static EnumRoute _fromState(GoRouterState state) => EnumRoute(
requiredEnumField: _$PersonDetailsEnumMap
- ._$fromName(state.params['requiredEnumField']!),
- enumField: _$convertMapValue(
- 'enum-field', state.queryParams, _$PersonDetailsEnumMap._$fromName),
+ ._$fromName(state.pathParameters['requiredEnumField']!),
+ enumField: _$convertMapValue('enum-field', state.queryParameters,
+ _$PersonDetailsEnumMap._$fromName),
enumFieldWithDefaultValue: _$convertMapValue(
'enum-field-with-default-value',
- state.queryParams,
+ state.queryParameters,
_$PersonDetailsEnumMap._$fromName) ??
PersonDetails.favoriteFood,
);
@@ -280,12 +289,12 @@
extension $EnhancedEnumRouteExtension on EnhancedEnumRoute {
static EnhancedEnumRoute _fromState(GoRouterState state) => EnhancedEnumRoute(
requiredEnumField: _$SportDetailsEnumMap
- ._$fromName(state.params['requiredEnumField']!),
- enumField: _$convertMapValue(
- 'enum-field', state.queryParams, _$SportDetailsEnumMap._$fromName),
+ ._$fromName(state.pathParameters['requiredEnumField']!),
+ enumField: _$convertMapValue('enum-field', state.queryParameters,
+ _$SportDetailsEnumMap._$fromName),
enumFieldWithDefaultValue: _$convertMapValue(
'enum-field-with-default-value',
- state.queryParams,
+ state.queryParameters,
_$SportDetailsEnumMap._$fromName) ??
SportDetails.football,
);
@@ -311,10 +320,10 @@
extension $StringRouteExtension on StringRoute {
static StringRoute _fromState(GoRouterState state) => StringRoute(
- requiredStringField: state.params['requiredStringField']!,
- stringField: state.queryParams['string-field'],
+ requiredStringField: state.pathParameters['requiredStringField']!,
+ stringField: state.queryParameters['string-field'],
stringFieldWithDefaultValue:
- state.queryParams['string-field-with-default-value'] ??
+ state.queryParameters['string-field-with-default-value'] ??
'defaultValue',
);
@@ -337,8 +346,9 @@
extension $UriRouteExtension on UriRoute {
static UriRoute _fromState(GoRouterState state) => UriRoute(
- requiredUriField: Uri.parse(state.params['requiredUriField']!),
- uriField: _$convertMapValue('uri-field', state.queryParams, Uri.parse),
+ requiredUriField: Uri.parse(state.pathParameters['requiredUriField']!),
+ uriField:
+ _$convertMapValue('uri-field', state.queryParameters, Uri.parse),
);
String get location => GoRouteData.$location(
diff --git a/packages/go_router_builder/example/lib/main.dart b/packages/go_router_builder/example/lib/main.dart
index cf917c5..a8ff9ad 100644
--- a/packages/go_router_builder/example/lib/main.dart
+++ b/packages/go_router_builder/example/lib/main.dart
@@ -40,13 +40,13 @@
redirect: (BuildContext context, GoRouterState state) {
final bool loggedIn = loginInfo.loggedIn;
- // check just the subloc in case there are query parameters
+ // check just the matchedLocation in case there are query parameters
final String loginLoc = const LoginRoute().location;
- final bool goingToLogin = state.subloc == loginLoc;
+ final bool goingToLogin = state.matchedLocation == loginLoc;
// the user is not logged in and not headed to /login, they need to login
if (!loggedIn && !goingToLogin) {
- return LoginRoute(fromPage: state.subloc).location;
+ return LoginRoute(fromPage: state.matchedLocation).location;
}
// the user is logged in and headed to /login, no need to login again
diff --git a/packages/go_router_builder/example/lib/main.g.dart b/packages/go_router_builder/example/lib/main.g.dart
index 864e8e1..031877e 100644
--- a/packages/go_router_builder/example/lib/main.g.dart
+++ b/packages/go_router_builder/example/lib/main.g.dart
@@ -57,7 +57,7 @@
extension $FamilyRouteExtension on FamilyRoute {
static FamilyRoute _fromState(GoRouterState state) => FamilyRoute(
- state.params['fid']!,
+ state.pathParameters['fid']!,
);
String get location => GoRouteData.$location(
@@ -74,8 +74,8 @@
extension $PersonRouteExtension on PersonRoute {
static PersonRoute _fromState(GoRouterState state) => PersonRoute(
- state.params['fid']!,
- int.parse(state.params['pid']!),
+ state.pathParameters['fid']!,
+ int.parse(state.pathParameters['pid']!),
);
String get location => GoRouteData.$location(
@@ -93,9 +93,9 @@
extension $PersonDetailsRouteExtension on PersonDetailsRoute {
static PersonDetailsRoute _fromState(GoRouterState state) =>
PersonDetailsRoute(
- state.params['fid']!,
- int.parse(state.params['pid']!),
- _$PersonDetailsEnumMap._$fromName(state.params['details']!),
+ state.pathParameters['fid']!,
+ int.parse(state.pathParameters['pid']!),
+ _$PersonDetailsEnumMap._$fromName(state.pathParameters['details']!),
$extra: state.extra as int?,
);
@@ -114,7 +114,7 @@
extension $FamilyCountRouteExtension on FamilyCountRoute {
static FamilyCountRoute _fromState(GoRouterState state) => FamilyCountRoute(
- int.parse(state.params['count']!),
+ int.parse(state.pathParameters['count']!),
);
String get location => GoRouteData.$location(
@@ -147,7 +147,7 @@
extension $LoginRouteExtension on LoginRoute {
static LoginRoute _fromState(GoRouterState state) => LoginRoute(
- fromPage: state.queryParams['from-page'],
+ fromPage: state.queryParameters['from-page'],
);
String get location => GoRouteData.$location(
diff --git a/packages/go_router_builder/example/lib/shell_route_with_keys_example.g.dart b/packages/go_router_builder/example/lib/shell_route_with_keys_example.g.dart
index a8a5101..b34d274 100644
--- a/packages/go_router_builder/example/lib/shell_route_with_keys_example.g.dart
+++ b/packages/go_router_builder/example/lib/shell_route_with_keys_example.g.dart
@@ -72,7 +72,7 @@
extension $UserRouteDataExtension on UserRouteData {
static UserRouteData _fromState(GoRouterState state) => UserRouteData(
- id: int.parse(state.params['id']!),
+ id: int.parse(state.pathParameters['id']!),
);
String get location => GoRouteData.$location(
diff --git a/packages/go_router_builder/example/lib/simple_example.g.dart b/packages/go_router_builder/example/lib/simple_example.g.dart
index 16538ef..410c914 100644
--- a/packages/go_router_builder/example/lib/simple_example.g.dart
+++ b/packages/go_router_builder/example/lib/simple_example.g.dart
@@ -40,7 +40,7 @@
extension $FamilyRouteExtension on FamilyRoute {
static FamilyRoute _fromState(GoRouterState state) => FamilyRoute(
- state.params['familyId']!,
+ state.pathParameters['familyId']!,
);
String get location => GoRouteData.$location(
diff --git a/packages/go_router_builder/example/pubspec.yaml b/packages/go_router_builder/example/pubspec.yaml
index b8b7c9f..6942a4f 100644
--- a/packages/go_router_builder/example/pubspec.yaml
+++ b/packages/go_router_builder/example/pubspec.yaml
@@ -8,7 +8,7 @@
dependencies:
flutter:
sdk: flutter
- go_router: ^6.2.0
+ go_router: ^7.0.0
provider: 6.0.5
dev_dependencies:
diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart
index 9f51e1b..1ed8507 100644
--- a/packages/go_router_builder/lib/src/type_helpers.dart
+++ b/packages/go_router_builder/lib/src/type_helpers.dart
@@ -98,11 +98,11 @@
}
if (element.isRequired) {
- return 'params[${escapeDartString(element.name)}]!';
+ return 'pathParameters[${escapeDartString(element.name)}]!';
}
if (element.isOptional) {
- return 'queryParams[${escapeDartString(element.name.kebab)}]';
+ return 'queryParameters[${escapeDartString(element.name.kebab)}]';
}
throw InvalidGenerationSourceError(
@@ -329,7 +329,7 @@
if (!parameterElement.isRequired) {
return '$convertMapValueHelperName('
'${escapeDartString(parameterElement.name.kebab)}, '
- 'state.queryParams, '
+ 'state.queryParameters, '
'${helperName(paramType)})';
}
return '${helperName(paramType)}'
diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml
index 11726b6..1f8b7b8 100644
--- a/packages/go_router_builder/pubspec.yaml
+++ b/packages/go_router_builder/pubspec.yaml
@@ -2,7 +2,7 @@
description: >-
A builder that supports generated strongly-typed route helpers for
package:go_router
-version: 1.2.2
+version: 2.0.0
repository: https://github.com/flutter/packages/tree/main/packages/go_router_builder
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router_builder%22
@@ -23,6 +23,6 @@
dev_dependencies:
build_runner: ^2.0.0
- go_router: ^6.0.10
+ go_router: ^7.0.0
source_gen_test: ^1.0.0
test: ^1.20.0
diff --git a/packages/go_router_builder/test/test_inputs/_go_router_builder_test_input.dart b/packages/go_router_builder/test/test_inputs/_go_router_builder_test_input.dart
index 1e39c20..39b4add 100644
--- a/packages/go_router_builder/test/test_inputs/_go_router_builder_test_input.dart
+++ b/packages/go_router_builder/test/test_inputs/_go_router_builder_test_input.dart
@@ -70,7 +70,7 @@
extension $EnumParamExtension on EnumParam {
static EnumParam _fromState(GoRouterState state) => EnumParam(
- y: _$EnumTestEnumMap._$fromName(state.params['y']!),
+ y: _$EnumTestEnumMap._$fromName(state.pathParameters['y']!),
);
String get location => GoRouteData.$location(
@@ -119,7 +119,8 @@
extension $DefaultValueRouteExtension on DefaultValueRoute {
static DefaultValueRoute _fromState(GoRouterState state) => DefaultValueRoute(
- param: _$convertMapValue('param', state.queryParams, int.parse) ?? 0,
+ param:
+ _$convertMapValue('param', state.queryParameters, int.parse) ?? 0,
);
String get location => GoRouteData.$location(
@@ -160,7 +161,8 @@
extension $ExtraValueRouteExtension on ExtraValueRoute {
static ExtraValueRoute _fromState(GoRouterState state) => ExtraValueRoute(
- param: _$convertMapValue('param', state.queryParams, int.parse) ?? 0,
+ param:
+ _$convertMapValue('param', state.queryParameters, int.parse) ?? 0,
$extra: state.extra as int?,
);