-
Notifications
You must be signed in to change notification settings - Fork 3.6k
[go_router] Support for top level onEnter callback.
#8339
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
Merged
Merged
Changes from 1 commit
Commits
Show all changes
61 commits
Select commit
Hold shift + click to select a range
6be9a5d
[go_router] Added top level onEnter callback.
omar-hanafy 171b639
added version 14.7.0
omar-hanafy f52a269
Merge branch 'main' into main
omar-hanafy 3bbd241
Merge branch 'main' into main
omar-hanafy 6a60006
Merge branch 'main' into main
omar-hanafy d1e1fc2
[go_router] added nextState, and currentState to OnEnter signature, a…
omar-hanafy 516db13
Merge branch 'main' into main
omar-hanafy e1f10b1
Merge branch 'main' into main
omar-hanafy 7a847b8
Merge branch 'main' into main
omar-hanafy b08d804
Merge branch 'main' into main
omar-hanafy 1e25466
Merge branch 'main' into main
omar-hanafy aec8e47
Add router instance to OnEnter callback
omar-hanafy 2bdc147
Merge branch 'main' into main
omar-hanafy 1bd3c18
[go_router] Async onEnter, improved redirection, and loop prevention.
omar-hanafy 61729b2
Merge branch 'main' into main
omar-hanafy 8334a64
Merge branch 'main' into main
omar-hanafy f28337e
improved redirection and async handling.
omar-hanafy 4092405
extracting the onEnter logic into its own helper class.
omar-hanafy c1c09d0
added named params to handleTopOnEnter.
omar-hanafy d9e6ea6
move tests
cedvdb 07c15f0
Merge pull request #3 from cedvdb/move_tests
omar-hanafy 3fbe011
Merge branch 'main' into main
omar-hanafy 67df52a
added tests
cedvdb eef39b1
Merge pull request #4 from cedvdb/omar-add-on-enter-tests
omar-hanafy 359eb0e
Merge branch 'flutter:main' into main
omar-hanafy cc57519
[go_router] Fix onEnter callback exception handling and enhance tests
omar-hanafy d4f2416
[go_router] updated Should allow redirection with query parameters te…
omar-hanafy 56f2dbe
Merge branch 'main' into main
omar-hanafy c458982
Merge branch 'main' into main
omar-hanafy 921dcb3
Merge branch 'main' into main
omar-hanafy 757f5a1
[go_router] Use specific imports in on_enter.dart
omar-hanafy b5e1e9e
Merge branch 'main' of https://github.com/omar-hanafy/packages
omar-hanafy 86c506b
Merge branch 'main' into main
omar-hanafy 3c4a85f
Merge branch 'main' into main
omar-hanafy 9d52c0d
Merge branch 'main' into main
omar-hanafy 97c5ed8
Merge branch 'main' into main
omar-hanafy 0323a45
Merge branch 'main' into main
omar-hanafy 4a9e6ff
[go_router] Replace boolean return with sealed class API for onEnter
omar-hanafy 3b2df49
[go_router] Make OnEnterHandler private and ensure onEnter priority o…
omar-hanafy 1dd95d8
Merge branch 'main' into main
omar-hanafy ade3f54
Merge branch 'main' into main
omar-hanafy ed43b0b
Merge branch 'main' into main
omar-hanafy d0d5e6d
[go_router] added allow/block factories for the OnEnterResult
omar-hanafy a484965
[go_router] ran dart format
omar-hanafy 10404f8
[go_router] returned back missing docs in GoRouterRedirect
omar-hanafy 2b3d0be
[go_router] Fix license headers to match repository standards
omar-hanafy b554e6c
[go_router] sealed `onEnter` (Allow/Block.then) + compose legacy redi…
omar-hanafy 99ab3c3
[go_router] Fix license headers to match repository standards
omar-hanafy 265f26f
[go_router] Refactor parser and on_enter for clarity and type safety
omar-hanafy 01f7ea6
[go_router] Remove unused initialLocation parameter from parser.
omar-hanafy 22a29bd
[go_router] Ensure onEnter runs during state restoration, and unified…
omar-hanafy 887c528
Merge branch 'main' into main
omar-hanafy 37712e5
Merge branch 'main' into main
omar-hanafy ee55004
Merge branch 'main' into main
omar-hanafy 9e37af9
[go_router] polish onEnter handling and docs
omar-hanafy faa9d81
Merge branch 'main' into main
omar-hanafy 20c4148
[go_router] Refine onEnter documentation and API adjustments
omar-hanafy 2b4c348
[go_router] Improve context safety and docs in navigation logic
omar-hanafy d1bc684
[go_router] Improve documentation for legacy redirect method
omar-hanafy 54afc72
Merge branch 'main' into main
omar-hanafy 33996c6
Merge remote-tracking branch 'upstream/main'
omar-hanafy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
[go_router] Refactor parser and on_enter for clarity and type safety
Simplified the OnEnterResult class documentation and removed factory constructors from the sealed class. Introduced type aliases for navigation callbacks and route information state in parser.dart, and updated method signatures to use these aliases for improved readability and type safety. Also streamlined fallback logic when navigation is blocked.
- Loading branch information
commit 265f26f9d7aefaddb8893da82c17a38b8a69a76f
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -7,24 +7,14 @@ import 'dart:async'; | |
| /// The result of an onEnter callback. | ||
| /// | ||
| /// This sealed class represents the possible outcomes of navigation interception. | ||
| /// Being sealed, it can only be extended within this library, ensuring a controlled | ||
| /// set of result types while still allowing construction via factory constructors | ||
| /// and the public concrete subtypes [Allow] and [Block]. | ||
| /// This class can't be extended. One must use one of its subtypes, [Allow] or | ||
| /// [Block], to indicate the result. | ||
| sealed class OnEnterResult { | ||
| /// Creates an [OnEnterResult]. | ||
| const OnEnterResult({this.then}); | ||
|
|
||
| /// Creates an [Allow] result that allows navigation to proceed. | ||
| /// | ||
| /// The [then] callback is executed after the navigation is allowed. | ||
| const factory OnEnterResult.allow({FutureOr<void> Function()? then}) = Allow; | ||
|
|
||
| /// Creates a [Block] result that blocks navigation from proceeding. | ||
| /// | ||
| /// The [then] callback is executed after the navigation is blocked. | ||
| const factory OnEnterResult.block({FutureOr<void> Function()? then}) = Block; | ||
|
|
||
| /// Executed after the decision is committed. Errors are reported and do not revert navigation. | ||
| /// Executed after the decision is committed. | ||
| /// Errors are reported and do not revert navigation. | ||
| final FutureOr<void> Function()? then; | ||
|
||
| } | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why it should be abstract ? I thought it would be better to allow this class to be extended only through the package, since we only support allow and block!
I do not get that, can u clarify what u want here.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes right
Just a suggestion, this helps with discoverability, but since the documentation is already pretty clear, it may not be necessary
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean u want that static methods to be inside the OnEnterResult, so users be able to
OnEnterResult.allow()orOnEnterResult.block()? okay good one, @chunhtai what do you think ?Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you mark this as resolved ? Forget about my suggestion, this can be done later if necessary. Let's avoid noise because back and forth take weeks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am ok either way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking a bit more it feels adding
OnEnterResult.allowandOnEnterResult.blockmay be more confusing than it worth, I suggest we remove themThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done