2

我有一个带有 LoginScreen 的应用程序,在成功登录后会转到 HomeScreen。我使用下面的代码来替换小部件并启动一个新的导航堆栈:

Navigator.pushReplacement(
    context,
    CupertinoPageRoute(
      builder: (context) => HomeScreen(),
    ),
  );

HomeScreen 是一个CupertinoTabScaffold2 CupertinoTabViews

第二个CupertinoTabView包含一个具有注销按钮的小部件。

成功注销后,我想删除 HomeWidget,然后转到 LoginScreen。

使用

Navigator.pushReplacement(
    context,
    CupertinoPageRoute(
      builder: (context) => LoginScreen(),
    ),
  );

在第二个内部的 Widget 中CupertinoTabView仅重置其导航,并且 LoginScreen 出现在第二个内部CupertinoTabView

我想要的是一些代码来删除我的 HomeScreen 并使用 LoginScreen 启动一个新的导航堆栈。

4

1 回答 1

4

从官方 FlutterGallery 源代码中找到解决方案。这将导航到根目录。

https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart#L122

Navigator.of(context, rootNavigator: true).pop();
于 2019-11-04T12:23:38.723 回答