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

Flutter中如何将倒计时秒数转换为分秒格式

Flutter倒计时分秒格式转换解决方案

实现思路

将总秒数拆解为分钟和剩余秒数,再通过字符串格式化确保两者以两位数字显示,不足补0:

  • 分钟数:总秒数做整数除法运算(seconds ~/ 60)
  • 剩余秒数:总秒数做取模运算(seconds % 60)
  • 格式化:用padLeft(2, '0')给单个数字补前导0,保证格式统一

完整代码示例

class _CountdownWidgetState extends State<CountdownWidget> {
  int _counter = 240;
  late Timer _timer;

  void startTimer() {
    _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
      if (_counter > 0) {
        setState(() {
          _counter--;
        });
      } else {
        _timer.cancel();
      }
    });
  }

  // 格式化秒数为MM:SS格式
  String formatTime(int seconds) {
    int minutes = seconds ~/ 60;
    int remainingSeconds = seconds % 60;
    return '${minutes.toString().padLeft(2, '0')}:${remainingSeconds.toString().padLeft(2, '0')}';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 显示格式化后的倒计时
            Text(
              formatTime(_counter),
              style: const TextStyle(fontSize: 32, fontWeight: FontWeight.bold),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: startTimer,
              child: const Text('启动倒计时'),
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 组件销毁时取消定时器,避免内存泄漏
    _timer.cancel();
    super.dispose();
  }
}

关键细节说明

  • 使用~//进行整数除法,避免出现小数分钟数
  • padLeft(2, '0')自动为单个数字补0,比如5秒会变成00:05,125秒变成02:05
  • 重写dispose方法取消定时器,防止组件销毁后定时器仍在运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:10:58