我正在使用Flutter应用程序,我想检查警报对话框是否在屏幕上打开。 谁能告诉我该怎么做,基本上我想在警报对话框打开和关闭之前和之后做一些事情。
答案 0 :(得分:3)
尝试一下!
v-list-item-group
答案 1 :(得分:0)
第一件事是您将显示自己的对话框。因此,您可以使用布尔值来跟踪它。
赞。
bool _isDialogShowing = false;
void _showDialog() {
_isDialogShowing = true;
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text("Title"),
actions: <Widget>[
FlatButton(
child: Text("CANCEL"),
onPressed: () {
_isDialogShowing = false;
Navigator.of(context).pop();
},
)
],
);
},
);
}
要监听后退按钮,可以将根窗口小部件包装在WillPopScope
中,并相应地处理onWillPop()
中的内容。
答案 2 :(得分:0)
在您的情况下,最好使用全屏对话框,然后您可以创建磨砂玻璃效果,并且可以在中心添加警报框(如容器)并进行装饰。为了使模态障碍物像效果一样,用inkWell或手势检测器将外部磨砂玻璃容器包裹起来,然后点击弹出屏幕
答案 3 :(得分:0)
您可以将警报对话框分配给变量,并使用build方法填充变量。稍后检查变量以了解是否显示对话框。
答案 4 :(得分:0)
我有同样的问题。也许我的解决方案对某人会更好:
_isOpen = true;
showDialog(
context: context,
child: AlertDialog(
title: Text("Some title!"),
content: Text("Some content!"),
)).then((_) => _isOpen = false);
then
将在警报关闭时运行。
答案 5 :(得分:0)
“所以我想在我的警报后面添加一个磨砂玻璃背景,所以我想要做的是在推送警报对话框之前我想将我的屏幕更改为磨砂玻璃背景,然后在弹出提醒后我想删除那个背景使用 setState 。这就是我想听警报对话框的原因。希望这一切对你有意义!谢谢!”
这就是你作为对话目的的回应。
您可以等待这样的对话框:
<do setup code here>
await showDialog(...);
<do final code here>
无论您如何显示对话框,我都看不到这方面的缺陷。如果您在 async
函数上没有此功能,您可以随时调用 .then
并在那里执行操作:
<do setup code here>
showDialog(...).then((_) => <do final code here>);
答案 6 :(得分:0)
你可以使用这个方法:
_isThereCurrentDialogShowing(BuildContext context) =>
ModalRoute.of(context)?.isCurrent != true;