我已经有一段时间遇到了 Flutter 和 GoRouter 的令人抓狂的问题,当我按下手机的后退按钮时,它要么最小化应用程序,要么关闭它,而不是弹出到上一页。这似乎只是 Android 14 上的问题,并且在早期 Android 版本上完美运行
我使用 PopScope 来处理弹出窗口 就像我说的,Popping 在应用程序内以及使用较旧的 Android 版本时工作正常,但在按下 Android 自己的后退按钮时,它无法在 v14 上工作 我目前在我的三星以及使用 Android 14 的 Android 模拟器上遇到了这种情况
我看过类似的帖子,但没有与此问题完全相关的内容
我恳请任何知道如何解决此问题的人提供帮助...是的,我已阅读文档
我在 GoRouter 中尝试了一系列更改,甚至用其他东西替换了 PopScope,并以另一种形式询问了它,我也调查了
https://docs.flutter.dev/release/writing-changes/android-predictive-back
这也没有解决问题
在 StackOverflow 上也研究了类似的问题
我认为 GoRouter 的 backButtonDispatcher 与 Android 14 配合得不好
有什么想法吗?
我的路由器就是这样设置的
GoRouter router = GoRouter(
initialLocation: LoginScreen.routeName,
debugLogDiagnostics: true,
routes: <RouteBase>[
GoRoute(
path: LoginScreen.routeName,
name: LoginScreen.title,
pageBuilder: (context, state) => MaterialPage<void>(
key: state.pageKey,
child: const LoginScreen(),
),
),
GoRoute(
path: PinScreen.routeName,
name: PinScreen.title,
pageBuilder: (context, state) => MaterialPage<void>(
key: state.pageKey,
child: const PinScreen(),
),
),
And my main is setup like
return MaterialApp.router(
scaffoldMessengerKey: scaffoldMessengerKey,
title: 'My APP',
localizationsDelegates: const [
AppLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
locale: AppLocalizations.getStoredLocale(),
supportedLocales: const [
Locale('en'),
Locale('af'),
],
theme: ThemeData(brightness: Brightness.light, useMaterial3: false),
darkTheme: ThemeData(brightness: Brightness.dark, useMaterial3: false),
routerConfig: router,
);
尝试更新flutter版本,在我的项目中我更新了版本并解决了