Skip to content

Commit 3475d56

Browse files
authored
Merge pull request #807 from eduardoflorence/overlays-state
Overlays state
2 parents cfc6294 + e4f981a commit 3475d56

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

lib/get_navigation/src/routes/observers/route_observer.dart

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ class GetObserver extends NavigatorObserver {
114114
value.isBack = false;
115115
value.removed = '';
116116
value.previous = _extractRouteName(previousRoute) ?? '';
117-
value.isSnackbar = newRoute.isSnackbar;
118-
value.isBottomSheet = newRoute.isBottomSheet;
119-
value.isDialog = newRoute.isDialog;
117+
value.isSnackbar = newRoute.isSnackbar ? true : value.isSnackbar ?? false;
118+
value.isBottomSheet = newRoute.isBottomSheet ? true : value.isBottomSheet ?? false;
119+
value.isDialog = newRoute.isDialog ? true : value.isDialog ?? false;
120120
});
121121

122122
if (routing != null) {
@@ -153,9 +153,9 @@ class GetObserver extends NavigatorObserver {
153153
value.isBack = true;
154154
value.removed = '';
155155
value.previous = newRoute.name ?? '';
156-
value.isSnackbar = false;
157-
value.isBottomSheet = false;
158-
value.isDialog = false;
156+
value.isSnackbar = currentRoute.isSnackbar ? false : value.isSnackbar;
157+
value.isBottomSheet = currentRoute.isBottomSheet ? false : value.isBottomSheet;
158+
value.isDialog = currentRoute.isDialog ? false : value.isDialog;
159159
});
160160

161161
routing?.call(_routeSend);
@@ -166,6 +166,7 @@ class GetObserver extends NavigatorObserver {
166166
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
167167
final newName = _extractRouteName(newRoute);
168168
final oldName = _extractRouteName(oldRoute);
169+
final currentRoute = _RouteData.ofRoute(oldRoute);
169170

170171
Get.log("REPLACE ROUTE $oldName");
171172
Get.log("NEW ROUTE $newName");
@@ -182,9 +183,9 @@ class GetObserver extends NavigatorObserver {
182183
value.isBack = false;
183184
value.removed = '';
184185
value.previous = '$oldName';
185-
value.isSnackbar = false;
186-
value.isBottomSheet = false;
187-
value.isDialog = false;
186+
value.isSnackbar = currentRoute.isSnackbar ? false : value.isSnackbar;
187+
value.isBottomSheet = currentRoute.isBottomSheet ? false : value.isBottomSheet;
188+
value.isDialog = currentRoute.isDialog ? false : value.isDialog;
188189
});
189190

190191
routing?.call(_routeSend);
@@ -194,13 +195,18 @@ class GetObserver extends NavigatorObserver {
194195
void didRemove(Route route, Route previousRoute) {
195196
super.didRemove(route, previousRoute);
196197
final routeName = _extractRouteName(route);
198+
final currentRoute = _RouteData.ofRoute(route);
197199

198200
Get.log("REMOVING ROUTE $routeName");
201+
199202
_routeSend?.update((value) {
200203
value.route = previousRoute;
201204
value.isBack = false;
202205
value.removed = routeName ?? '';
203206
value.previous = routeName ?? '';
207+
value.isSnackbar = currentRoute.isSnackbar ? false : value.isSnackbar;
208+
value.isBottomSheet = currentRoute.isBottomSheet ? false : value.isBottomSheet;
209+
value.isDialog = currentRoute.isDialog ? false : value.isDialog;
204210
});
205211

206212
routing?.call(_routeSend);

0 commit comments

Comments
 (0)