如何打开对话框而无需按钮

发布于 2025-02-13 06:15:39 字数 1159 浏览 0 评论 0原文

如果FTP文件下载失败,则将显示一个通知窗口。成功或失败作为布尔变量返回。 (如果失败,返回false)。 Android Standard ShowDialog成功。

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

但是,iOS标准showcupertinodialog尚未执行。我的对话框函数就是这样。

_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吗? 谢谢。

If the FTP file download fails, a notification window is displayed. Success or failure is returned as a bool variable. (return false if failure). The Android standard showDialog was successful.

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

However, the iOS standard showCupertinoDialog is not executed. My dialog function is like this.

_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)],
        )
    );
  }

Do you know how to callback showCupertinoDialog without a button?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁吢 2025-02-20 06:15:39

已解决

使用计时器检查。如果您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();
  }

Solved

Checked using a timer. If you cancel() the timer variable when dispose is called, it works normally.

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();
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文