如何在flutter应用程序中返回应用程序的第一页?

Sar*_*nki 2 dart flutter

所以我创建了一个应用程序,它有 4 个页面,然后是一个 webview,所以每当用户从 webview 注销时,我都会推送开始屏幕。我希望我的应用程序转到第一页。我试过了:

Navigator.of(context).pushNamed('/welcomeScreen');
Navigator.popUntil(context,ModalRoute.withName('/welcomeScreen'));
Run Code Online (Sandbox Code Playgroud)

但没有运气。我认为这可能是因为 webview。这是我的路线。

final routes = {
'/login': (BuildContext context) => new LoginScreen(),
'/home': (BuildContext context) => new HomeScreen(),
'/welcomeScreen':(BuildContext context) => new WelcomeScreen(),
'/email': (BuildContext context) => new EmailScreen(),
'/webview': (BuildContext context) => new WebviewScreen()
};
Run Code Online (Sandbox Code Playgroud)

Sha*_*hra 6

您想要返回所有屏幕,直到堆栈中的第一个屏幕,因此您可以使用的最佳语句是:

Navigator.popUntil(context, (Route<dynamic> predicate) => predicate.isFirst);
Run Code Online (Sandbox Code Playgroud)


cip*_*nat 5

此函数将设置页面根页面,因此它应该适用于注销情况。

Navigator.pushAndRemoveUnitl 我猜你在找什么。

void makeRoutePage({BuildContext context, Widget pageRef}) {
  Navigator.pushAndRemoveUntil(
      context,
      MaterialPageRoute(builder: (context) => pageRef),
      (Route<dynamic> route) => false);
}
Run Code Online (Sandbox Code Playgroud)

如何使用它 :

makeRoutePage(context: context, pageRef: YourFirstPage());
Run Code Online (Sandbox Code Playgroud)