GoRouter:如何在 Flutter(Web 和移动设备)中登录后导航到主页并防止返回登录页面
我正在使用 Flutter 构建一个适用于 Web 和移动设备的电子商务应用程序,并且使用 GoRouter 包进行路由。当用户登录时,我想将他们导航到主页(/home)并阻止他们导航回登录页面(使用网络上的后退按钮或浏览器后退操作)。
这是我迄今为止尝试过的:
验证登录凭据后,我使用了 context.replace('/home');在我的登录按钮的 onTap 方法中导航到主页。 但是,问题是用户仍然可以使用浏览器的后退按钮或设备的后退按钮导航回登录页面。 我在寻找什么:
确保用户成功登录后无法导航回登录页面的解决方案。
pushReplacement
,我在我的项目中使用了相同的场景希望对您有所帮助。
@override
Future<void> initState() async {
super.initState();
SharedPreferences prefs = await SharedPreferences.getInstance();
var email = prefs.getString('email');
prefs.setString('email', '[email protected]');
if (email != null) {
GoRouter.of(context).pushReplacement(/homeRoute);
} else {
GoRouter.of(context).pushReplacement(loginRoute);
}
}
下面是你的 router.dart 文件
class AppRouter {
static final GoRouter router = GoRouter(
routes: [
GoRoute(
path: '/homeRoute',
builder: (context, state) => const HomeScreen(),
),
GoRoute(
path: '/loginRoute',
builder: (context, state) => const LoginScreen(),
),
]
}
参考这个如何在SharedPreferences
保存isLogin