Open LucaDillenburg opened 3 years ago
Ran into the same issue with your reproduction sample. Upon further testing, it seems that when there are multiple pages in the navigation stack, whenever context.flow<FlowState>().update()
is called with a change to FlowState
all the pages provided in onGeneratePages
get rebuilt.
A workaround could be to modify your flow state so that the home page is not included in onGeneratePages
after you navigate to a new page. For example, in your flow_navigation
reproduction sample you can modify routes.dart
accordingly:
onGeneratePages: (state, pages) => [
if (!state.subpage)
MaterialPage<void>(
child: Home(),
),
if (state.subpage)
MaterialPage<void>(
child: Subpage(),
),
],
This way, once context.flow<AppFlowData>().update((data) => data.copyWith(subpage: true))
is called Home
will not be included in the onGeneratePages
list and won't get rebuilt.
I'm able to reproduce this on the onboarding example of this repo @felangel You can see that if you are in welcome page and navigates to the next, this welcome page will be rebuilt
Describe the bug This is probably more of a question than an actual bug. Every change I make to the AppFlowData causes every page that is in the stack to rebuild itself. The problem is that I need for a particular page (the homepage) to show some animations and perform an API call when it first loads, however, when the home page adds another page to the stack or the page added is popped, for example, the homepage is rebuilt, showing the animation again and calling the API once more. This is not the same behavior as if you are using named routes in the MaterialApp. I want to know if this is the expected behavior and how (if possible) I can get around it.
To Reproduce Steps to reproduce the behavior:
I made an example in this repository.
Expected behavior I believe the expected behavior should be the same as if you were using Flutter's regular routes system (MaterialRoute with routes property): when a page is added or removed from the stack, the other pages are not rebuilt.