Skip to content
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

[go_router] Add GoRouterState state parameter to GoRouterData.onExit #6495

Merged

Conversation

ValentinVignal
Copy link
Contributor

Part of flutter/flutter#137394

I need to add the state parameter to the onExit method so I can use the factoryImpl(state):

Widget builder(BuildContext context, GoRouterState state) =>
factoryImpl(state).build(context, state);
Page<void> pageBuilder(BuildContext context, GoRouterState state) =>
factoryImpl(state).buildPage(context, state);
FutureOr<String?> redirect(BuildContext context, GoRouterState state) =>
factoryImpl(state).redirect(context, state);
return GoRoute(
path: path,
name: name,
builder: builder,
pageBuilder: pageBuilder,
redirect: redirect,
routes: routes,
parentNavigatorKey: parentNavigatorKey,
);
}

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Copy link
Contributor

@chunhtai chunhtai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code LGTM, but we should have a bit more test.

Since this is a breaking change can you write a breaking change doc?

You can also explore dart fix, I think you can add a new rule there to auto migrate customers' code.

@@ -25,7 +25,7 @@ void main() {
path: '1',
builder: (BuildContext context, GoRouterState state) =>
DummyScreen(key: page1),
onExit: (BuildContext context) {
onExit: (BuildContext context, GoRouterState state) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a new test that assert the properties in state, to make sure the state is accurate with the route?

@chunhtai
Copy link
Contributor

See https://github.com/flutter/packages/blob/main/packages/go_router/lib/fix_data.yaml

if you can write a rule that cover all cases, the migration doc can be as simple as please run dart fix --apply

@ValentinVignal
Copy link
Contributor Author

Since this is a breaking change can you write a breaking change doc?

Okay sure I'll write one ! 👍

@ValentinVignal
Copy link
Contributor Author

@chunhtai I'm struggling a bit with the dart fix. Is there a way to add a parameter to a method given to a field of a class constructor ? I didn't find it in the doc

(I also posted a message on discord https://discord.com/channels/608014603317936148/608021635370582020/1228715527073955912)

@chunhtai
Copy link
Contributor

@chunhtai
Copy link
Contributor

you can also check the syntax here https://github.com/flutter/flutter/wiki/Data-driven-Fixes

@ValentinVignal
Copy link
Contributor Author

ValentinVignal commented Apr 16, 2024

See https://github.com/flutter/packages/blob/main/packages/go_router/lib/fix_data.yaml

if you can write a rule that cover all cases, the migration doc can be as simple as please run dart fix --apply

That's a bit different, it looks like the addParameter is used to change occurrences of:

MyClass.myMethod(param1);

into

MyClass.myMethod(param1, param2);

while I need to add a parameter to a method given as a argument:

GoRouter(
  onExit: (BuildContext context) => true;
);

into

GoRouter(
  onExit: (BuildContext context, GoRouterState state) => true;
);

sfshaza2 pushed a commit to flutter/website that referenced this pull request Apr 17, 2024
Adds the migration guide for go router v14
(flutter/packages#6495)

Fixes flutter/flutter#146805

## Presubmit checklist

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

Co-authored-by: Brett Morgan <brettmorgan@google.com>
@ValentinVignal
Copy link
Contributor Author

The migration doc flutter/website#10423 got merged

Copy link
Contributor

@chunhtai chunhtai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for improving the API!

@chunhtai chunhtai requested a review from hangyujin April 18, 2024 16:52
Copy link
Contributor

@hangyujin hangyujin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@chunhtai chunhtai added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 24, 2024
@auto-submit auto-submit bot merged commit 26f660b into flutter:main Apr 24, 2024
78 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 25, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Apr 25, 2024
flutter/packages@cf6d280...fde908d

2024-04-25 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 4.1.3 to 4.1.4 (flutter/packages#6609)
2024-04-24 32538273+ValentinVignal@users.noreply.github.com [go_router] Add `GoRouterState state` parameter to `GoRouterData.onExit` (flutter/packages#6495)
2024-04-24 15619084+vashworth@users.noreply.github.com Add CI steps to test iOS and macOS plugins with both CocoaPods and Swift Package Manager (flutter/packages#6557)
2024-04-24 engine-flutter-autoroll@skia.org Roll Flutter from 77043ba to dba4f77 (30 revisions) (flutter/packages#6607)
2024-04-24 stuartmorgan@google.com [camera] Finish converting iOS to Pigeon (flutter/packages#6601)
2024-04-24 47866232+chunhtai@users.noreply.github.com [go_router] Fixes an issue where route future does not complete when � (flutter/packages#6596)
2024-04-24 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Bump legacy all_packages project AGP version to 7.0.0, Gradle version to 7.0.2 (#6591)" (flutter/packages#6605)
2024-04-23 reidbaker@google.com [in_app_purchase_android] Readme update for Alternative billing (flutter/packages#6578)
2024-04-23 43054281+camsim99@users.noreply.github.com Bump legacy all_packages project AGP version to 7.0.0, Gradle version to 7.0.2 (flutter/packages#6591)
2024-04-23 engine-flutter-autoroll@skia.org Roll Flutter from 140edb9 to 77043ba (21 revisions) (flutter/packages#6599)
2024-04-23 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 3.25.1 to 3.25.2 (flutter/packages#6597)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
auto-submit bot pushed a commit that referenced this pull request May 16, 2024
TecHaxter pushed a commit to TecHaxter/flutter_packages that referenced this pull request May 22, 2024
TecHaxter pushed a commit to TecHaxter/flutter_packages that referenced this pull request May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: go_router
Projects
None yet
3 participants