YYFlutter/flutter-custom-dialog

【BUG】关于dismiss的一个比较严重的问题

q876625596 opened this issue · 9 comments

try {
      _loadingDialog = YYDialog().build(context)
        ..widget(SpinKitWave(color: Colors.white))
        ..backgroundColor = Colors.transparent
      //..barrierColor = Colors.black.withOpacity(.3)
        ..borderRadius = 4.0
        ..show();
    //逻辑代码...
}catch(e){
     _loadingDialog.dismiss();
}finally{
    _loadingDialog.dismiss();
}

代码如上,当我使用try-catch时,如果此时没有异常,那么逻辑最终进入finally里面,弹框可以正常关闭,但是一旦逻辑抛出异常,此时无论进入catch还是进入finally,dismiss均无法关闭弹窗。

能否断点一下 _loadingDialog 看看它的值是不是 = null,实例化没成功?

能否断点一下 _loadingDialog 看看它的值是不是 = null,实例化没成功?

打印过了,不是null,而且对比了dialog里面的context与我当前的context也是相同的

话说为什么你要try 起来

话说为什么你要try 起来

因为我需要在网络请求的时候显示一个loading,然后当网络请求结束或者失败的时候将他dismiss掉,所以使用了finally来dismiss

网络错误不应该是这种写法的操作吧,错误有错误的回调 在错误回调中去执行

网络错误不应该是这种写法的操作吧,错误有错误的回调 在错误回调中去执行

不只是网络请求,在请求之前就有一些操作,此时需要先显示loading,这些操作里面有可能会出现一些异常,比如图片的处理之类的

然后还有一个问题,就是当我gravity设置为bottom的时候,此时我的dialog里面有输入框,键盘弹出会将输入框直接覆盖,而不是将输入框顶上来,请问有没有什么解决方法呢

请问你后续有解决吗?

试试 v1.0.20的 useRootNavigator 属性