谁能告诉我什么时候在flutter中使用navigatorKey而不是Navigator.of(build context)?

问题描述 投票:0回答:1

目前我第一次使用

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)
flutter flutter-navigation
1个回答
1
投票

如果您想在构建上下文之外使用导航,您可以使用 navigator 键来实现此目的,否则使用 navigator.of(context) 就可以了。

设为全局navigatorKey

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

void main() {
  runApp(MyApp());
}

在使用它之前,请将此导航键分配给MaterialApp

MaterialApp(
    debugShowCheckedModeBanner: false,
    navigatorKey: navigatorKey, //here
      ...
© www.soinside.com 2019 - 2024. All rights reserved.