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
issue 61346 route can be added and disposed in the same frame #61375
Conversation
try { | ||
controller.index = 2; | ||
await tester.pumpAndSettle(); | ||
} catch (e){ |
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.
nit: space before {
} | ||
|
||
expect(error, isNull); | ||
|
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.
nit: remove extra blank line
error = e; | ||
} | ||
|
||
expect(error, isNull); |
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.
Do you need this? Wouldn't the test fail by itself if it throws an error?
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.
LGTM
@@ -213,7 +213,11 @@ abstract class Route<T> { | |||
// focused child can only be attached to navigator after initState which | |||
// will be guarded by the asynchronous gap. | |||
TickerFuture.complete().then<void>((void _) { | |||
navigator.focusScopeNode.requestFocus(); | |||
// The route can be disposed before the ticker future completes. This can | |||
// happen when the navigator is under a TabView that does a warping. The |
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.
does a warping => "warps" from one tab to another, non-adjacent tab, with an animation.
On the face of it, it's not clear why this route might have been disposed as a consequence of the warp. The test appears to set up a situation where the old Navigator will have been disposed - not its route. Can you explain this scenario in a little more detail?
Description
The route may be added and disposed in the same frame and it throws error in such cases. This pr fixes it.
Related Issues
Fixes #61346
Tests
I added the following tests:
see files
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]
). This will ensure a smooth and quick review process.///
).flutter analyze --flutter-repo
) does not report any problems on my PR.Breaking Change
Did any tests fail when you ran them? Please read Handling breaking changes.