目前我第一次使用
navigatorKey
来删除对话框
未来登录()异步{ // 在登录时向用户显示加载对话框 显示对话框( 上下文:上下文, 屏障可关闭:假, 构建器:(上下文)=> const 中心( 子:CircularProgressIndicator(), ), ); 尝试 { 等待 FirebaseAuth.instance.signInWithEmailAndPassword( 电子邮件:email.text.trim(), 密码:password.text.trim(), ); } 捕获 (e) { 打印( e.toString(), ); } /* Navigator.of(context).popUntil((route) => route.isFirst); 不起作用*/ navigatorKey.currentState!.popUntil((route)=>route.isFirst); // 在用户登录后立即删除加载对话框
这工作正常,但我很困惑何时使用导航键而不是
Navigator.of(build context)
如果您想在构建上下文之外使用导航,您可以使用 navigator 键来实现此目的,否则使用 navigator.of(context) 就可以了。
设为全局navigatorKey
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() {
runApp(MyApp());
}
在使用它之前,请将此导航键分配给MaterialApp
MaterialApp(
debugShowCheckedModeBanner: false,
navigatorKey: navigatorKey, //here
...