因此,我创建了一个应用程序,该应用程序有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()
};
`
答案 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);