如何在Flutter应用中返回应用的首页?

时间:2019-02-28 12:42:04

标签: dart flutter

因此,我创建了一个应用程序,该应用程序有4个页面,然后是一个Web视图,因此每当用户从Web视图中注销时,我都会按下启动屏幕。 我希望我的应用程序转到我尝试过的首页

Navigator.of(context).pushNamed('/welcomeScreen');
Navigator.popUntil(context,ModalRoute.withName('/welcomeScreen'));

但是没有运气。我认为这可能是因为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()
};

`

4 个答案:

答案 0 :(得分:2)

此功能将设置页面根页面,因此它应适用于注销情况。

Navigator.pushAndRemoveUnitl是您要寻找的东西。

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

如何使用它:

makeRoutePage(context: context, pageRef: YourFirstPage());

答案 1 :(得分:1)

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

Navigator.popUntil(context, (Route<dynamic> predicate) => predicate.isFirst);

答案 2 :(得分:0)

另一个解决方案可以是Navigator.popUntil(context, ModalRoute.withName('/'));,它将弹出堆栈中除初始屏幕之外的所有屏幕。

答案 3 :(得分:0)

只需在任何按钮操作中使用此代码,它就会将U从任何其他页面重定向到MainScreen /主页。

Navigator.of(context).pushNamedAndRemoveUntil('/', (Route<dynamic> route) => false);