From e90eceb285a84028df690c25a687ff9b5168bba8 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 26 Aug 2023 00:06:41 +0600 Subject: [PATCH] fix: infinite route push glitch --- lib/utils/service_utils.dart | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/utils/service_utils.dart b/lib/utils/service_utils.dart index 2d44b984..c80e527d 100644 --- a/lib/utils/service_utils.dart +++ b/lib/utils/service_utils.dart @@ -257,11 +257,19 @@ abstract class ServiceUtils { } static void navigate(BuildContext context, String location, {Object? extra}) { + if (GoRouterState.of(context).matchedLocation == location) return; GoRouter.of(context).go(location, extra: extra); } static void push(BuildContext context, String location, {Object? extra}) { - GoRouter.of(context).push(location, extra: extra); + final router = GoRouter.of(context); + final routerState = GoRouterState.of(context); + final routerStack = router.routerDelegate.currentConfiguration.matches + .map((e) => e.matchedLocation); + + if (routerState.matchedLocation == location || + routerStack.contains(location)) return; + router.push(location, extra: extra); } static List sortTracks(List tracks, SortBy sortBy) {