58 lines
1.3 KiB
Dart
58 lines
1.3 KiB
Dart
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<dynamic> route, Route<dynamic>? previousRoute) {
|
|
super.didPush(route, previousRoute);
|
|
globalRouteObserverBus.fire(
|
|
GlobalRouter(
|
|
name: route.settings.name,
|
|
router: route,
|
|
action: RouterActionType.didPush,
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {
|
|
super.didPop(route, previousRoute);
|
|
globalRouteObserverBus.fire(
|
|
GlobalRouter(
|
|
name: route.settings.name,
|
|
router: route,
|
|
action: RouterActionType.didPop,
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {
|
|
super.didRemove(route, previousRoute);
|
|
globalRouteObserverBus.fire(
|
|
GlobalRouter(
|
|
name: route.settings.name,
|
|
router: route,
|
|
action: RouterActionType.didRemove,
|
|
),
|
|
);
|
|
}
|
|
}
|