如何在Flutter应用中正确实现注销功能?

时间:2019-07-11 08:20:44

标签: flutter dart

我想在我的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(),
     )
);

1 个答案:

答案 0 :(得分:0)

使用pushAndRemoveUntil代替使用PushReplacement。这将推送您的新路线,并从导航堆栈中删除路线,直到传入的函数返回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,
);