我已经展示了MoalBottomSheet来获取动态口令代码,如果用户输入错误的代码,我想要显示Snackbar.所以,我用了这个方法,

showModalBottomSheet(
        isScrollControlled: true,
        isDismissible: false,
        context: context,
        builder: (context) {
          return SafeArea(
            child: Stack(
              alignment: Alignment.topCenter,
              clipBehavior: Clip.none,
              children: [
                Column(
                  children: [
                    Container(
                      padding: const EdgeInsets.symmetric(
                          horizontal: 30, vertical: 0),
                      child: Column(children: [
                        Padding(
                          padding:
                              const EdgeInsets.symmetric(horizontal: 50),
                          child: TextField(
                            controller: codeController,
                            keyboardType: TextInputType.number,
                          ),
                        ),
                        const SizedBox(
                          height: 5,
                        ),
                        Padding(
                          padding:
                              const EdgeInsets.symmetric(horizontal: 50),
                          child: CustomButton(
                              onTap: () async {
                                if (codeController.text.length == 6) {
                                  try {
                                    PhoneAuthCredential credential =
                                        PhoneAuthProvider.credential(
                                            verificationId: verificationId,
                                            smsCode:
                                                codeController.text.trim());
                                    await _auth
                                        .signInWithCredential(credential);
                                    Navigator.of(context)
                                        .pushNamedAndRemoveUntil(
                                            '/home',
                                            (Route<dynamic> route) =>
                                                false);
                                  } catch (e) {
                                  // ---------------------------------------------- 
                                  //this snackbar 
                                     showSnackBar(
                                           context,
                                           "Invalid verification code",
                                          "Please enter correct verification code");
                                    }
                                  }
                              },
                              text: "Continue",
                              height: 50),
                        )
                      ]),
                    )
                  ],
                )
              ],
            ),
          );
        });
  

显示在showMoalBottomSheet下面的Snackbar,所以我想显示上面的Snackbar以显示ModalBottomSheet,而不隐藏showMoalBottomSheet.

推荐答案

你可以用另外的ScaffoldshowModalBottomSheet中得到新的ScaffoldMessenger,而不是顶层.

showModalBottomSheet(
    isScrollControlled: true,
    isDismissible: false,
    context: context,
    builder: (context) {
      return SafeArea(
        child: Scaffold( //here another scaffold
          body: Stack(
            alignment: Alignment.topCenter,
            clipBehavior: Clip.none,
            children: [
              Column(
                children: [
                  Container(
                    padding: const EdgeInsets.symmetric(
                        horizontal: 30, vertical: 0),
                    child: Column(
                      children: [
                        ElevatedButton(
                          onPressed: () {
                            const SnackBar snackBar = SnackBar(
                                content: Text(
                                    "Hey, I am above BottomSheet"));
                            ScaffoldMessenger.of(context)
                                .showSnackBar(snackBar);
                          },
                          child: Text("show SnackBar"),
                        )
                      ],
                    ),
                  )
                ],
              )
            ],
          ),
        ),
      );
    });

Flutter相关问答推荐

关闭视频通话,相机仍在运行!(Flutter WebRTC)

如何创建一个按钮来在Ffltter Webview中转到上一页?

Android NFC未收到空的NFC标签

在保持标高=1的情况下更改AppBar立面 colored颜色 /遮罩

出现异常.RangeError(RangeError(index):无效值:有效值范围为空:0).分度误差

在setState之后,Ffltter ListView.Builder未更新

悬停时打开Flutter 下拉按钮

在LinkedIn上分享Fighter和Web的链接会产生不同的结果

框中的Flutter 适配图像

如何翻转这种剪刀设计

如何将带有参数的函数传递给FIFTH中的自定义小部件

Flutter中不使用Container是否可以做margin

课程中的访问Provider

允许文本小部件在容器之间溢出

如何为文本主题设置多种 colored颜色 ?

如何在 flutter 中创建渐变按钮

Getx Flutter 在更新值时抛出空错误

我可以使用 Future 来填充Text() 小部件而不是在 Flutter 中使用 FutureBuilder 吗?

无法列出 com.facebook.android:facebook-login -Facebook 登录问题的版本

更新未知文档 ID firebase\flutter 中的字段