flutter 无法跨异步间隙使用生成上下文

a1o7rhls  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(125)

如果我直接调用navigator.pushnamed方法,我会收到一条消息,说不要在异步间隙中使用'BuildContext'。我不知道如何解决这个问题,并移动到下一个屏幕。这是密码

color: Colors.blueAccent,
                title: 'Register',
                onPressed: () async {
                  try {
                    final newUser = await _auth.createUserWithEmailAndPassword(
                        email: email, password: password);
                    if (newUser.user != null) {
                      await Future.delayed(Duration.zero);
                      Navigator.of(context).pushNamed(ChatScreen.id);
                    }
                  } catch (e) {
                    print(e);
                  }
                },
              ),
    ```

字符串

a14dhokn

a14dhokn1#

在小部件的同步操作期间执行异步任务时,必须检查小部件是否仍然可用。
对于您的情况,在Navigator行之前添加以下行

if (!mounted) return;

字符串
通过这样做,您可以检查当前的Widget是否已挂载且可用。如果Widget正在被重建或销毁,检查它是否被挂载将返回false
如果它返回true,这意味着Widget已经准备好了,你几乎可以在任何地方使用异步/同步任务。
如果这没有帮助或不适合你的情况下,请让我知道,我会提供更多的支持,快乐的编码!

相关问题