You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中AlertDialog显示数秒无操作自动关闭后弹出第二个弹窗的实现方法

实现方案

核心逻辑很简单:showDialog返回的Future会在弹窗被关闭时触发完成状态,我们只需要在弹出第一个弹窗后启动定时器,计时结束后关闭第一个弹窗,待弹窗关闭完成后调用第二个弹窗的显示方法即可。

完整修改代码

首先确保你已导入Timer依赖:

import 'dart:async';

修改_showFirstDialog方法如下:

_showFirstDialog() async {
  // 启动定时任务:3秒后关闭第一个弹窗,时长可自行调整
  Timer(const Duration(seconds: 3), () {
    // 增加mounted判断避免页面销毁后执行报错
    if (mounted) {
      Navigator.pop(context);
    }
  });

  // 等待第一个弹窗关闭
  await showDialog<String>(
    context: context,
    barrierDismissible: false,
    builder: (BuildContext context) {
      return AlertDialog(
        title: const Text('Show Dialog 1'),
        content: const Text('Wait a sec'),
      );
    }
  );

  // 第一个弹窗关闭后,弹出第二个弹窗
  if (mounted) {
    _showSecondDialog();
  }
}

注意事项

  • 你可以自行修改Duration(seconds: 3)的数值,调整第一个弹窗的显示时长
  • mounted判断是为了避免页面已经退出销毁时,定时器回调仍然执行导致的异常,建议保留
  • 原有_timerToShowFirstDialog、_showSecondDialog方法不需要做任何修改,正常调用_timerToShowFirstDialog即可触发完整弹窗流程

内容的提问来源于stack exchange,提问作者Muhammad Rizky Nur Fajrie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:15:03