如何在Flutter中打开没有按钮的对话框



如果FTP文件下载失败,则弹出提示窗口。成功或失败作为bool变量返回。(失败则返回false)。Android标准showDialog是成功的。

if(context.read<ScoreImageProvider>().bDownloadRes == false){
SchedulerBinding.instance!.addPostFrameCallback((_) {
_ftpErrorAlert(context);
});
}

不执行iOS标准showCupertinoDialog。我的dialog function是这样的。

_ftpErrorAlert(BuildContext context){
Size size = MediaQuery.of(context).size;
Platform.isAndroid ?
showDialog(
context: context,
barrierDismissible: true,
builder: (_) => AlertDialog(
title: _ftpErrorTitle(size),
content: _ftpErrorContent(size),
actions: <Widget>[_ftpErrorOkButton(size)],
)
) :
showCupertinoDialog(
context: context,
barrierDismissible: true,
builder: (_) => CupertinoAlertDialog(
title: _ftpErrorTitle(size),
content: _ftpErrorContent(size),
actions: <Widget>[_ftpErrorOkButton(size)],
)
);
}

你知道如何在没有按钮的情况下回调showCupertinoDialog吗?谢谢。

已解决

使用计时器检查。当dispose被调用时,如果你cancel()定时器变量,它会正常工作。

chkTime = Timer.periodic(Duration(seconds: 1), (timer) {
if(nChkCount == false 20) {
Timer.run(() {
showAlert(context);
timer.cancel();
});
}
nChkCount++;
});
void showAlert(BuildContext context){
Size size = MediaQuery.of(context).size;
Platform.isAndroid ?
showDialog(
context: context,
barrierDismissible: false,
builder: (_) => AlertDialog(
title: _title(),
content: _content(),
actions: [_action()],
)
) :
showCupertinoDialog(
context: context,
barrierDismissible: false,
builder: (_) => CupertinoAlertDialog(
title: _title(),
content: _content(),
actions: [_action()],
)
);
}
void dispose() {
// TODO: implement dispose
chkTime!.cancel();
chkTime = null;
super.dispose();
}

相关内容

  • 没有找到相关文章

最新更新