flutter - 如果最终有,颤动会忽略捕获中的警报对话框
问题描述
在 catch 中编写一个 alertdialog 但如果有 finally 它只是忽略警报对话框。打印只是显示并转义对话框?如果我删除了 finally 它就可以正常工作。帮助为什么会发生这种情况。
catch(error){
showDialog(context: context, builder: (ctx)=> AlertDialog(
title: Text("An ERROR accurred!"),
content: Text(error.toString()),
actions: [
FlatButton(onPressed: (){Navigator.of(ctx).pop();}, child: Text("OK"))
],
),
);
print(error.toString()+"from alert");
}
finally{
setState(() {
_isLoading = false;
});
Navigator.of(context).pop();
}
}
解决方案
finally
将根据任何结果被解雇。
您的代码实际上是如何工作的:首先,catch
被触发,showDialog
被执行并显示对话框,然后print
被执行。在这些操作之后,执行finally
部分并Navigator.of(context).pop()
弹出(隐藏)您的对话框。而且由于它很快,您认为您的对话框没有显示。
推荐阅读
- generics - 有没有办法提示编译器在使用 Option::None 时使用某种默认的泛型类型?
- javascript - Phaser 3中特定动画完成时的回调?
- azure - @azure/identity credentials.getToken('openid') 返回 null 而不是为 DefaultAzureCredential() 配置了环境变量的令牌?
- javascript - 替换 javascript 短代码以链接
- angular - Angular Mat-Table 完成渲染事件 / Mat Paginator Loading Spinner
- sql - 计数不同和案例问题
- android - 无法在 Dagger 2 中使用 SubComponent 注入类
- reactjs - 如何处理点击事件以在reactjs的标签中显示文本
- php - 无法在 WordPress 中以管理员身份登录
- sql - PostgreSQL - 从返回的“日期”值中减去“天”而不返回时间戳