如何确定正在显示某个对话框还是堆栈顶部是一个对话框?
我有一个async
函数,该函数可以推送一个对话框(如带有加载对话框的发布请求)。当响应到来时,加载对话框closed(pop),然后推送消息对话框。
但问题是:
如果我发送多个请求,有时加载屏幕会停留在顶部...
答案 0 :(得分:0)
您可以通过进行一些验证来检查Dialog
是否在Navigator对象的顶部:
void _verifyDialog(context) {
var _isDialogOnTop = false;
var stackCount = 0;
Navigator.popUntil(context, (route) {
if (!_isDialogOnTop && route.toString().contains("_DialogRoute")) {
_isDialogOnTop = true;
}
else{
stackCount++;
}
return _isDialogOnTop || stackCount > 0;
});
print (_isDialogOnTop);
}
答案 1 :(得分:0)
bool dialogIsVisible(BuildContext context) {
bool isVisible = false;
Navigator.popUntil(context, (route) {
isVisible = route is PopupRoute;
return !isVisible;
});
return isVisible;
}