Files
biz_xfj_cloud/lib/common/utils/router/router_observer_tool.dart
T

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,
),
);
}
}