gpt4 book ai didi

Flutter:如何弹出对话框以及当前页面?

转载 作者:行者123 更新时间:2023-12-03 21:48:34 38 4
gpt4 key购买 nike

下面是代码。

  • 从首页导航到登录页面
  •     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 ,我想弹出对话框以及登录页面,以便返回到最后一页,即主页。但是,使用上面的代码,有时它可以工作,但有时也会弹出主页。
    我试过,有/没有 rootNavigator 设置为 true,但无法实现我的目标。
    请帮助我了解我在这里缺少什么。
    我在这里查看了答案 How to dismiss flutter dialog? .

    最佳答案

    你可以简单地使用

    Navigator.popUntil(context, (route) {
    return count++ == 2;
    });
    更新:
    如果您不知道应该弹出多少页,那么您应该使用
    Navigator.push(context, MaterialPageRoute(builder: (context)=>YourMaterialClassName(), settings: RouteSettings(name: "nameOfYourClass")));
    当你插入你的 Material 课时。
    然后在弹出的时候使用
    Navigator.popUntil(context, (route) => route.settings.name == "nameOfYourClass");

    关于Flutter:如何弹出对话框以及当前页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63479766/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com