import 'package:event_bus/event_bus.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; enum RouterActionType { didPush, didReplace, didPop, didRemove } class GlobalRouter { final String? name; final Route? router; final RouterActionType action; GlobalRouter({ this.name, this.router, required this.action, }); } class GlobalRouteObserver extends GetObserver { static EventBus globalRouteObserverBus = EventBus(); @override void didPush(Route route, Route? previousRoute) { super.didPush(route, previousRoute); globalRouteObserverBus.fire( GlobalRouter( name: route.settings.name, router: route, action: RouterActionType.didPush, ), ); } @override void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); globalRouteObserverBus.fire( GlobalRouter( name: route.settings.name, router: route, action: RouterActionType.didPop, ), ); } @override void didRemove(Route route, Route? previousRoute) { super.didRemove(route, previousRoute); globalRouteObserverBus.fire( GlobalRouter( name: route.settings.name, router: route, action: RouterActionType.didRemove, ), ); } }