Update Notice!!!
The explaination below is somewhat outdated. Now, I recommends you to use go_router, a routing package using Flutter ...
For further actions, you may consider blocking this person and/or reporting abuse
Hello!! This article was really helpful! Thank you
But how did you handle it like
Get.back()
? An error occurs in this process. Same asGet.rootDelegate.popRoute()
.I would ultimately like to implement the following elements.
<-
button is pressed (previously useGet.back()
)You can do that by using
Get.roodDelegate.popHistory
with custom logic.popHistory
method inAppRouterDelegate
I've tested it and it works for me. Hope this can help you :-)
Thank you!! That was really helpful
If you refresh it, it doesn't work
popHistory
, but I think we can solve it in a different way!How you have implemented this? Even without overriding, getting same result.
Hello!
We can go back via html API, dart:html
Thanks!
HANW!
Helloo Buddies~
Hi, thanks for the article. I tested the code and found out the browser back history did not really get back to the previous page state. For example when i scroll to certain location and navigate back again, instead of getting back new page was loaded. Is there any way we can preserve the page state using your code?
Yes, I also found some issue of that approach. As of now, the simplest way to solve this problem is using @kkimj 's method. (
window.history.back()
) If you want to manually manage your history stack, then check outpushHistory
method in Delegete class. Maybe you can cache those records and write your own back method logic.when i did it your way on the flutter web,
Get.rootDelegate.toNamed("/")
works, butGet.rootDelegate.offToNamed("/")
throws an Unexpected null value error. I think there is an error related to the key, but I can't figure it out.Also
Get.snackbar()
throws the same error.class AppRouterDelegate extends GetDelegate {
@override
Widget build(BuildContext context) {
return Navigator(
key: Get.key, //Please add this line to get snackbar,dialog,etc.
onPopPage: (route, result) => route.didPop(result),
pages: currentConfiguration != null
? [currentConfiguration!.currentPage!]
: [GetNavConfig.fromRoute(Routes.HOME)!.currentPage!],
);
}
}
stackoverflow.com/questions/734005...
Hey, i tried to open your stackoverflow link but its say already removed. Do you already find the solution for this problem? Thanks
hi my friends i use this article for my app route but im using this code on flutter web and when refresh or back,forward button in browser clicked nothing happend in my app.. how can handle this ?
my code like this
class AppRouterDelegate extends GetDelegate {
GetNavConfig get prevRoute => // here
history.length < 2 ? history.last : history[history.length - 2];
@override
Future popHistory() async {
// and here
final result = prevRoute;
Get.rootDelegate.offNamed(prevRoute.currentPage!.name);
return result;
}
@override
Widget build(BuildContext context) {
GlobalKey mainNavigatorKey = GlobalKey();
}
}
Hi, It was very helpful. But I realized that with this fix, WillPopScope widget (or new PopScope) don't work (Flutter Web)
Case like this:
Hello, how do I make Getx compatible with Go router? My project depends heavily on GetX. How can I quickly migrate to go router
have you found any solution?
i have same problem. please let me know
Yes, you can mix GetX pages and GoRouter.
Like this sample.
@swimmingkiim why you recommend to user go_router?
Hello !! the solution of overriding
popHistory()
not working, I can't go back to the previous page on mobile, is there any solution can handle it likeGet.back()
but in navigator 2.0How to logout ? After logout, still going to previous page on back press.
How to go home from login so that login page will not open when we press back button ?
Try with arguments. It's not working. As it use root where no arguments are passed.
You can try: