Flutter 关闭弹框并finish掉当前页面

在用户登录退出场景中,点击确定退出按钮,调用接口成功后,需关闭Dialog并finish当前页面。在Flutter中,由于pop操作对象不正确可能导致黑屏问题,调整pop顺序和对象可以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景描述:

在一个用户登录退出的场景模式下,并关闭掉当前页面,场景可能类似如下:

在这里插入图片描述

如图,当我们点击确定退出按钮,去请求接口,请求成功后,关闭当前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移动电商系列全套
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值