如何解决如何在Flutter登录后禁止用户返回
在此应用中,当用户单击登录页面导航到主页,但是当用户在主屏幕上按返回按钮时,页面导航到登录,所以这不是正确的流程
我Triend navigator.pushReplacement,但是当用户在主屏幕应用程序关闭时按返回按钮并转到后台时,当用户从后台打开该应用程序后却显示主屏幕而是显示登录屏幕,因此请提出建议,
这是我的代码 登录屏幕
Future<void> login(
String emailId,String password,String accessToken) async {
final dio = Dio(); // Provide a dio instance
String token = AppStrings.keyBearer + accessToken;
var customHeaders = {
AppStrings.authorization: token,AppStrings.keyContentType: AppStrings.valueContentType
};
dio.options.headers.addAll(customHeaders);
final client = RestClient(dio);
await client
.loginUser(LoginUser(
deviceToken: AppStrings.valueDeviceToken,lastLoginPlatform: AppStrings.valuePlatform))
.then((res) {
if(res.interests.isEmpty){
AppHelper.showToastMessage(
AppStrings.message_logged_in_successfully);
Navigator.of(context,rootNavigator: true).pop();
Navigator.push(
context,MaterialPageRoute(
builder: (context) => InterestsPage(
userAccesstoken: accessToken,)));
}
else{
AppHelper.showToastMessage(
AppStrings.message_logged_in_successfully);
Navigator.of(context,MaterialPageRoute(
builder: (context) => HomePage(
userAccesstoken: accessToken,userInterests: res.interests
)));
}
}).catchError((Object obj) {
switch (obj.runtimeType) {
case DioError:
final res = (obj as DioError).response;
Navigator.of(context,rootNavigator: true).pop();
logger.e(res.statusMessage);
AppHelper.showToastMessage(AppStrings.message_something_went_wrong);
break;
}
});
}
我用过
Navigator.of(context,rootNavigator: true).pop();
用于关闭对话框
我没有收到任何错误,但是我希望当用户在主屏幕应用程序上按“后退”按钮进入后台,并且当用户从后台打开该应用程序时显示主屏幕而不是登录屏幕
告诉我导航中出错的地方以及解决方法。
解决方法
您要寻找的方法是pushReplacement
,方法是:
Navigator.of(context).pop();
Navigator
.of(context)
.pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) => InterestsPage(
userAccesstoken: accessToken,)
)
)
这样,它将弹出警报消息,然后将所有先前的页面替换为所需的页面。
但是,需要显示登录页面的逻辑行为归结为首选项,并且由于没有附加代码我无法说出如何做到这一点。例如,我将用户登录后存储在本地数据库中。这样,即使没有连接,也可以访问应用程序。
,您应该在主文件上使用路由,使用PushReplacement可以很好地工作,没有问题,您应该根据用户是否登录过来决定在哪里导航用户,可以使用类似{{ 3}}来实现此功能。登录后,只需保存一个表示用户已登录的首选项,然后在启动屏幕上导航用户以更正屏幕
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。