下面是代码。
- 从主页导航到登录页面
ElevatedButton(
onPressed: () => Navigator.of(context, rootNavigator: true)
.push(MaterialPageRoute(
fullscreenDialog: true,
builder: (context) => UserLoginPage(),
)),
child: Text('Login to continue'),
),
内部登录页面:
BlocConsumer<UserAuthCubit, UserAuthState>(
listener: (context, state) {
if (state is UserAuthorized) {
Navigator.of(context, rootNavigator: true).pop();
}
if (state is UserAuthWaiting) {
showModalBottomSheet(
useRootNavigator: true,
isDismissible: false,
context: context,
builder: (context) {
return WillPopScope(
onWillPop: () async => false,
child: Center(
child: Text(state.msg),
),
);
});
dialog = true;
} else {
if (dialog) {
Navigator.of(context, rootNavigator: true).pop();
dialog = false;
}
}
},
builder: (context, state) { // some widget code... }
当状态为UserAuthorized
,我想弹出对话框以及LoginPage,以便返回到最后一个页面,即主页。然而,使用上面的代码,有时,它可以工作,有时,主页也会弹出。
我尝试过,将 rootNavigator 设置为 true 或不设置为 true,但无法实现我的目标。
请帮助我理解我在这里缺少什么。
我在这里检查了答案如何关闭颤动对话框? https://stackoverflow.com/a/50683571/13390181.