Routing Navigator.pop()未弹出最新路线

Routing Navigator.pop()未弹出最新路线,routing,dart,flutter,Routing,Dart,Flutter,我试图构建一个流程,如果用户未登录,应用程序会将登录页面推送到堆栈上。一旦他们完成登录,它会弹出登录页面并返回主页 推送工作时,pop段不工作-我可以让pop返回值来推送,但我无法关闭/login路由。我错过什么了吗 主页 登录页面.dart 其结果是: 1.登录屏幕被按下 2.我可以登录 3.printI应该在我完成登录后弹出运行窗口 4.print_val返回true 5.流行音乐似乎不起作用 这是因为PushName隐藏当前视图以显示新视图 这意味着您的旧视图不再位于小部件树上。因此,用于

我试图构建一个流程,如果用户未登录,应用程序会将登录页面推送到堆栈上。一旦他们完成登录,它会弹出登录页面并返回主页

推送工作时,pop段不工作-我可以让pop返回值来推送,但我无法关闭/login路由。我错过什么了吗

主页

登录页面.dart

其结果是: 1.登录屏幕被按下 2.我可以登录 3.printI应该在我完成登录后弹出运行窗口 4.print_val返回true 5.流行音乐似乎不起作用

这是因为PushName隐藏当前视图以显示新视图

这意味着您的旧视图不再位于小部件树上。因此,用于执行Navigator.ofcontext的上下文不再存在

您可以改为将Navigator.ofcontext的结果存储在局部变量中。并重用它来调用pushNamed和pop

您使用的是Navigator.ofcontext,但您在使用它时没有任何上下文,因此它可能不会调用您期望的导航器。
class _HomePageState extends State<HomePage> with UserAccount {
  @override
  void initState() {
    super.initState();

    if (!isLoggedIn) {
      print("not logged in, going to login page");
      SchedulerBinding.instance.addPostFrameCallback((_) async{
        var _val = await Navigator.of(context).pushNamed("/login");
        print("I SHOULD HAVE POPPED");
        print(_val);
        Navigator.of(context).pop();
      });
    }
  }
class _LoginPageState extends State<LoginPage> with UserAccount {
  void _googleLogin() async {
    await googleClient.doGooglesignIn();
    Navigator.of(context).pop(true);
  }
final navigator = Navigator.of(context);
await navigator.pushNamed('/login');
navigator.pop();