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

如何在Flutter中让ElevatedButton禁用900毫秒?

Flutter按钮禁用900毫秒的实现方案

核心是通过布尔状态变量控制按钮的可点击状态,点击后立即禁用按钮,等待指定时长后恢复。具体实现如下:

1. 定义状态变量

在你的State类中添加控制按钮状态的变量:

bool _isButtonDisabled = false;

2. 绑定按钮的可点击状态

将按钮的onPressed属性与状态变量关联,禁用时设为null:

ElevatedButton(
  onPressed: _isButtonDisabled ? null : _handleButtonTap,
  child: const Text("点击按钮"),
)

3. 实现点击逻辑

修改你的点击处理方法,先切换禁用状态,执行业务逻辑后等待900毫秒再恢复:

Future<void> _handleButtonTap() async {
  // 立即禁用按钮并更新UI
  setState(() {
    _isButtonDisabled = true;
  });

  // 执行原有业务逻辑
  incrementCounter();
  await AudioPlayer().play(
    AssetSource(Assets.correct_answer_audio),
    volume: 1.0,
  );
  _onTyping();

  // 等待900毫秒
  await Future.delayed(const Duration(milliseconds: 900));

  // 恢复按钮可用状态并更新UI
  setState(() {
    _isButtonDisabled = false;
  });

  // 关闭当前页面
  Navigator.of(context).pop();
}

注意事项

  • 必须通过setState()更新状态变量,否则UI不会刷新,按钮状态不会变化
  • 原有代码末尾多了一个多余的括号);,需要删除以避免语法错误
  • 如果音频播放是异步操作,建议加上await确保播放完成后再进入延迟

内容的提问来源于stack exchange,提问作者Lakminee D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:20:36