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
相关产品推荐
相关产品推荐

