如果我直接调用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);
}
},
),
```
字符串
1条答案
按热度按时间a14dhokn1#
在小部件的同步操作期间执行异步任务时,必须检查小部件是否仍然可用。
对于您的情况,在
Navigator
行之前添加以下行字符串
通过这样做,您可以检查当前的
Widget
是否已挂载且可用。如果Widget
正在被重建或销毁,检查它是否被挂载将返回false
。如果它返回
true
,这意味着Widget
已经准备好了,你几乎可以在任何地方使用异步/同步任务。如果这没有帮助或不适合你的情况下,请让我知道,我会提供更多的支持,快乐的编码!