Open karvulf opened 1 year ago
Hey @karvulf :wave: Thanks for creating an issue and sorry for my absence lately.
This is an interesting problem and I would say it can only occur when we are appending the path part, i.e. using the "relative beaming" feature. If we were to beam with absolute path, even multiple times to the same place, nothing should change nor rebuild unnecesarily.
Then another question is; should we go about this the other way around, making duplicate route appending impossible unless forced? I'm not sure is there any use case where we really want .../test/test/test...
.
Is your feature request related to a problem? Please describe.
I had troubles using beamToNamed when adding a route to the current path on a button. E.g. I have a button that has
When tapping the button multiple times, it can happen that
beamToNamed
will be called more than one time. To reproduce my problem easier, you could also just callbeamToNamed
two times like thisNow I would start a navigation to a path that is not defined in my pathPatterns, e.g. the double call could lead to
/screen-a/test/test
but I only defined the path for/screen-a/test
. If I could somehow prevent beaming to the wrong route (/screen-a/test/test
), then I shouldn't be worry about multiple clicks on the same button. I know, I could also define the absolute path to ensure that I beam to the correct route. But sometimes it's easier just not to do that to prevent really long paths defined inbeamToNamed
and it makes functions also reusable.Describe the solution you'd like What I really would like is to add a flag to
beamToNamed
to say that I want to prevent beaming to the same place again, when it was called in a specific timespan. E.g. I could have a timeStamp that is always updated when beaming to a new page. Then before I beam to the next page, I check if the route is still the same and if so, I could check the last timeStamp if the difference is big enough to pass the navigation.Like this const _maxDuration = Duration(milliseconds: 100); String _lastUri = ''; DateTime _lastUriTimestamp = DateTime.now();
Of course, I would like to have this logic in
beamToNamed
with a flag likeduplicatesTimespan
.And if the flag is set, the logic from above could be used where
_maxDuration
could beduplicatesTimespan
.Additional context
I think this can be a general problem when beaming to a page by pressing a button and the user is fast enough to press it multiple times. Maybe I also missed something and I already can prevent that.