我想在我的 flutter 应用程序中实现注销功能。我的侧边菜单抽屉注销中有一个按钮,当用户按下按钮时,我希望用户导航到登录屏幕并弹出所有其他屏幕。
我试过这样做,我的代码是
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.remove('userPreference');
await Future.delayed(Duration(seconds: 2));
Navigator.of(context)
.popUntil(ModalRoute.withName(Navigator.defaultRouteName));
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) =>
LoginScreen(),
)
);
Run Code Online (Sandbox Code Playgroud)
而不是使用PushReplacement,使用pushAndRemoveUntil。这会推送您的新路线,并从导航堆栈中删除路线路线,直到传入的函数返回true。如果要删除所有其他屏幕,请传入一个始终返回 false 的函数:
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.remove('userPreference');
await Future.delayed(Duration(seconds: 2));
Navigator.of(context).pushAndRemoveUntil(
// the new route
MaterialPageRoute(
builder: (BuildContext context) => LoginScreen(),
),
// this function should return true when we're done removing routes
// but because we want to remove all other screens, we make it
// always return false
(Route route) => false,
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3615 次 |
| 最近记录: |