Skip to content

[go_router_builder] Use a mixin instead of an extension #9275

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/go_router_builder/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 3.0.0

- Route classes now required to use a mixin `with _$RouteName`.

## 2.9.1

- Fixes an deprecated warning for using withNullability
Expand Down
15 changes: 8 additions & 7 deletions packages/go_router_builder/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ method.

<?code-excerpt "example/lib/readme_excerpts.dart (HomeRoute)"?>
```dart
class HomeRoute extends GoRouteData {
class HomeRoute extends GoRouteData with _$HomeRoute {
const HomeRoute();

@override
Expand All @@ -108,7 +108,7 @@ The tree of routes is defined as an attribute on each of the top-level routes:
),
],
)
class HomeRoute extends GoRouteData {
class HomeRoute extends GoRouteData with _$HomeRoute {
const HomeRoute();

@override
Expand All @@ -124,7 +124,7 @@ class RedirectRoute extends GoRouteData {
}

@TypedGoRoute<LoginRoute>(path: '/login')
class LoginRoute extends GoRouteData {
class LoginRoute extends GoRouteData with _$LoginRoute {
LoginRoute({this.from});
final String? from;

Expand Down Expand Up @@ -211,7 +211,7 @@ Parameters (named or positional) not listed in the path of `TypedGoRoute` indica
<?code-excerpt "example/lib/readme_excerpts.dart (login)"?>
```dart
@TypedGoRoute<LoginRoute>(path: '/login')
class LoginRoute extends GoRouteData {
class LoginRoute extends GoRouteData with _$LoginRoute {
LoginRoute({this.from});
final String? from;

Expand All @@ -229,7 +229,7 @@ For query parameters with a **non-nullable** type, you can define a default valu
<?code-excerpt "example/lib/readme_excerpts.dart (MyRoute)"?>
```dart
@TypedGoRoute<MyRoute>(path: '/my-route')
class MyRoute extends GoRouteData {
class MyRoute extends GoRouteData with _$MyRoute {
MyRoute({this.queryParameter = 'defaultValue'});
final String queryParameter;

Expand All @@ -250,7 +250,7 @@ parameter with the special name `$extra`:

<?code-excerpt "example/lib/readme_excerpts.dart (PersonRouteWithExtra)"?>
```dart
class PersonRouteWithExtra extends GoRouteData {
class PersonRouteWithExtra extends GoRouteData with _$PersonRouteWithExtra {
PersonRouteWithExtra(this.$extra);
final Person? $extra;

Expand Down Expand Up @@ -281,7 +281,8 @@ You can, of course, combine the use of path, query and $extra parameters:
<?code-excerpt "example/lib/readme_excerpts.dart (HotdogRouteWithEverything)"?>
```dart
@TypedGoRoute<HotdogRouteWithEverything>(path: '/:ketchup')
class HotdogRouteWithEverything extends GoRouteData {
class HotdogRouteWithEverything extends GoRouteData
with _$HotdogRouteWithEverything {
HotdogRouteWithEverything(this.ketchup, this.mustard, this.$extra);
final bool ketchup; // A required path parameter.
final String? mustard; // An optional query parameter.
Expand Down
27 changes: 14 additions & 13 deletions packages/go_router_builder/example/lib/all_types.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ part 'all_types.g.dart';
path: 'iterable-route-with-default-values'),
])
@immutable
class AllTypesBaseRoute extends GoRouteData {
class AllTypesBaseRoute extends GoRouteData with _$AllTypesBaseRoute {
const AllTypesBaseRoute();

@override
Expand All @@ -39,7 +39,7 @@ class AllTypesBaseRoute extends GoRouteData {
);
}

class BigIntRoute extends GoRouteData {
class BigIntRoute extends GoRouteData with _$BigIntRoute {
BigIntRoute({
required this.requiredBigIntField,
this.bigIntField,
Expand All @@ -62,7 +62,7 @@ class BigIntRoute extends GoRouteData {
);
}

class BoolRoute extends GoRouteData {
class BoolRoute extends GoRouteData with _$BoolRoute {
BoolRoute({
required this.requiredBoolField,
this.boolField,
Expand All @@ -88,7 +88,7 @@ class BoolRoute extends GoRouteData {
);
}

class DateTimeRoute extends GoRouteData {
class DateTimeRoute extends GoRouteData with _$DateTimeRoute {
DateTimeRoute({
required this.requiredDateTimeField,
this.dateTimeField,
Expand All @@ -111,7 +111,7 @@ class DateTimeRoute extends GoRouteData {
);
}

class DoubleRoute extends GoRouteData {
class DoubleRoute extends GoRouteData with _$DoubleRoute {
DoubleRoute({
required this.requiredDoubleField,
this.doubleField,
Expand All @@ -137,7 +137,7 @@ class DoubleRoute extends GoRouteData {
);
}

class IntRoute extends GoRouteData {
class IntRoute extends GoRouteData with _$IntRoute {
IntRoute({
required this.requiredIntField,
this.intField,
Expand All @@ -163,7 +163,7 @@ class IntRoute extends GoRouteData {
);
}

class NumRoute extends GoRouteData {
class NumRoute extends GoRouteData with _$NumRoute {
NumRoute({
required this.requiredNumField,
this.numField,
Expand All @@ -189,7 +189,7 @@ class NumRoute extends GoRouteData {
);
}

class EnumRoute extends GoRouteData {
class EnumRoute extends GoRouteData with _$EnumRoute {
EnumRoute({
required this.requiredEnumField,
this.enumField,
Expand All @@ -216,7 +216,7 @@ class EnumRoute extends GoRouteData {
);
}

class EnhancedEnumRoute extends GoRouteData {
class EnhancedEnumRoute extends GoRouteData with _$EnhancedEnumRoute {
EnhancedEnumRoute({
required this.requiredEnumField,
this.enumField,
Expand All @@ -243,7 +243,7 @@ class EnhancedEnumRoute extends GoRouteData {
);
}

class StringRoute extends GoRouteData {
class StringRoute extends GoRouteData with _$StringRoute {
StringRoute({
required this.requiredStringField,
this.stringField,
Expand All @@ -269,7 +269,7 @@ class StringRoute extends GoRouteData {
);
}

class UriRoute extends GoRouteData {
class UriRoute extends GoRouteData with _$UriRoute {
UriRoute({
required this.requiredUriField,
this.uriField,
Expand All @@ -292,7 +292,7 @@ class UriRoute extends GoRouteData {
);
}

class IterableRoute extends GoRouteData {
class IterableRoute extends GoRouteData with _$IterableRoute {
IterableRoute({
this.intIterableField,
this.doubleIterableField,
Expand Down Expand Up @@ -365,7 +365,8 @@ class IterableRoute extends GoRouteData {
);
}

class IterableRouteWithDefaultValues extends GoRouteData {
class IterableRouteWithDefaultValues extends GoRouteData
with _$IterableRouteWithDefaultValues {
const IterableRouteWithDefaultValues({
this.intIterableField = const <int>[0],
this.doubleIterableField = const <double>[0, 1, 2],
Expand Down
Loading