51 lines
1.2 KiB
Dart
51 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:news_getx/routes/app_pages.dart';
|
|
|
|
|
|
/// 监听路由导航
|
|
class AppNavigatorObserver extends NavigatorObserver {
|
|
@override
|
|
void didPush(Route route, Route? previousRoute) {
|
|
super.didPush(route, previousRoute);
|
|
|
|
var name = route.settings.name ?? "";
|
|
if (name.isNotEmpty) {
|
|
AppPages.history.add(name);
|
|
}
|
|
}
|
|
|
|
|
|
@override
|
|
void didPop(Route route, Route? previousRoute) {
|
|
super.didPop(route, previousRoute);
|
|
|
|
AppPages.history.remove(route.settings.name);
|
|
}
|
|
|
|
|
|
@override
|
|
void didRemove(Route route, Route? previousRoute) {
|
|
super.didRemove(route, previousRoute);
|
|
AppPages.history.remove(route.settings.name);
|
|
}
|
|
|
|
@override
|
|
void didReplace({Route? newRoute, Route? oldRoute}) {
|
|
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
|
|
|
|
if (newRoute != null) {
|
|
var index = AppPages.history.indexWhere((element) {
|
|
return element == oldRoute?.settings.name;
|
|
});
|
|
|
|
var name = newRoute.settings.name ?? '';
|
|
if (name.isNotEmpty) {
|
|
if (index > 0) {
|
|
AppPages.history[index] = name;
|
|
} else {
|
|
AppPages.history.add(name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |