场景描述:
在一个用户登录退出的场景模式下,并关闭掉当前页面,场景可能类似如下:
如图,当我们点击确定退出按钮,去请求接口,请求成功后,关闭当前dialog,然后再退出当前页面。
上部分代码:
setting_page.dart
// 弹框
void showLoginOutDialog() {
showDialog(
context: context,
barrierDismissible: false, // 点击外部不消失
builder: (BuildContext context){
return CommonDialog(
title: "确定退出当前账号?",
onNavClickListener: (){
print("onNavClickListener ");
Navigator.of(context).pop(1);
},
onPosClickListener: (){
print("loginaa ");
Navigator.of(context).pop(1);
_loginOut();
},
);
}
);
}
// 退出网络请求,这里的pop("login_out")为标志,进行退出后页面的刷新操作。
void _loginOut() async{
DataUtils.loginOut().then((res){
print("res $res");
if (res) {
ToastUtil.showBottomToast("退出成功");
Navigator.of(context).pop("login_out");
}else {
ToastUtil.showBottomToast("退出失败");
}
}).catchError((onError){
print("onError $onError");
});
}
总结:
之前同时pop两个的时候出现黑屏的bug,可能是pop的context
对象不对,一个是widget的,一个是dialog的,这时候我试了调整下pop的位置,经测试后发现操作正常。
更多资源请访问:
关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。
在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序
在微信后台回复「Flutter移动电商」,即可免费领取Flutter移动电商系列全套