所以我创建了一个应用程序,它有 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)
您想要返回所有屏幕,直到堆栈中的第一个屏幕,因此您可以使用的最佳语句是:
Navigator.popUntil(context, (Route<dynamic> predicate) => predicate.isFirst);
Run Code Online (Sandbox Code Playgroud)
此函数将设置页面根页面,因此它应该适用于注销情况。
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)
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |