给GetMaterialApp.router设置路由监听器
routerDelegate: GetDelegate( navigatorObservers: [MyNavigatorObserver()],)
GetMaterialApp.router(
debugShowCheckedModeBanner: false,
title: "demo"
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: LanguageType.values.map((e) => e.locale).toList(),
// 配置多语言
translationsKeys: AppTranslation.translations,
// 默认语言
locale: LanguageManager.instance.currentLocaleType.locale,
// 如果无法找到当前语言的翻译,则回退到这个语言
fallbackLocale: LanguageManager.instance.currentLocaleType.locale,
theme: ThemeData(
brightness: Brightness.light,
useMaterial3: false,
splashColor: Colors.transparent, // 点击时的水波纹颜色设置为透明
highlightColor: Colors.transparent, // 点击时的背景高亮颜色设置为透明
),
initialBinding: BindingsBuilder(
() {},
),
getPages: AppPages.routes,
routeInformationParser: Get.createInformationParser(
initialRoute: Routes.LAUNCH,
),
routerDelegate: GetDelegate( navigatorObservers: [MyNavigatorObserver()],),
defaultTransition: Transition.rightToLeft,
transitionDuration: const Duration(milliseconds: 200),
builder: EasyLoading.init(builder: (context, child) {
if (Platform.isAndroid) {
AppConfig.textHeight = 1.2;
}
return AnnotatedRegion<SystemUiOverlayStyle>(
value: AppConfig.systemUiOverlayStyle,
child: MediaQuery(
data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.0)), // 控制字体不受系统控制
child: KeyboardDismissOnTap(
// 全局配置点击键盘外区域取消键盘
child: child ?? const SizedBox.shrink(),
),
),
);
}),
)
路由监听器
class MyNavigatorObserver extends NavigatorObserver {
@override
void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {
print('MyNavigatorObserver: didPush - Route ${route.settings.name}');
super.didPush(route, previousRoute);
}
@override
Future<void> didPop(
Route<dynamic> route, Route<dynamic>? previousRoute) async {
print('MyNavigatorObserver: didPop - Route ${route.settings.name}');
super.didPop(route, previousRoute);
}
@override
void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {
print('MyNavigatorObserver: didRemove - Route ${route.settings.name}');
super.didRemove(route, previousRoute);
}
@override
void didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}) {
print(
'MyNavigatorObserver: didReplace - New route: ${newRoute?.settings.name}, Old route: ${oldRoute?.settings.name}');
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
}
@override
void didStartUserGesture(
Route<dynamic> route, Route<dynamic>? previousRoute) {
print(
'MyNavigatorObserver: didStartUserGesture - Route ${route.settings.name}');
super.didStartUserGesture(route, previousRoute);
}
@override
void didStopUserGesture() {
print('MyNavigatorObserver: didStopUserGesture');
super.didStopUserGesture();
}
}