import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:simplecloudnotifier/state/app_bar_state.dart'; class Navi { static final SCNRouteObserver routeObserver = SCNRouteObserver(); static final RouteObserver> modalRouteObserver = RouteObserver>(); static void push(BuildContext context, T Function() builder) { Provider.of(context, listen: false).setLoadingIndeterminate(false); Navigator.push(context, MaterialPageRoute(builder: (context) => builder())); } static void popToRoot(BuildContext context) { Provider.of(context, listen: false).setLoadingIndeterminate(false); Navigator.popUntil(context, (route) => route.isFirst); } } class SCNRouteObserver extends RouteObserver> { @override void didPush(Route route, Route? previousRoute) { super.didPush(route, previousRoute); if (route is PageRoute) { AppBarState().setLoadingIndeterminate(false); print('[SCNRouteObserver] .didPush()'); } } @override void didReplace({Route? newRoute, Route? oldRoute}) { super.didReplace(newRoute: newRoute, oldRoute: oldRoute); if (newRoute is PageRoute) { AppBarState().setLoadingIndeterminate(false); print('[SCNRouteObserver] .didReplace()'); } } @override void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); if (previousRoute is PageRoute && route is PageRoute) { AppBarState().setLoadingIndeterminate(false); print('[SCNRouteObserver] .didPop()'); } } }