Flutter中如何在Text组件格式化显示00:00:00格式时长
Flutter实现00:00:00格式时长显示的简便方法
给你两种不用写一堆if判断的解决方案:
方案一:原生字符串补位(无需额外依赖)
Flutter的字符串自带padLeft方法,专门用来给字符串补位,正好解决你的问题。它会把字符串填充到指定长度,不足部分在左侧补指定字符。
直接修改你的代码即可:
Text( "temps : ${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}", style: const TextStyle( fontSize: 24, ), ),
举个例子:如果hours是4,转成字符串后是"4",padLeft(2, '0')会把它变成"04";如果是13,字符串长度已经是2,就不会额外补0,完美避免你之前遇到的013这类错误。
方案二:用intl包(适合复杂时间场景)
如果你之后还要处理更多日期时间相关的格式化需求,可以用官方推荐的intl包:
- 先在
pubspec.yaml中添加依赖:
dependencies: flutter: sdk: flutter intl: ^0.18.1 # 可替换为最新版本
- 在代码文件中导入包:
import 'package:intl/intl.dart';
- 用
DateFormat格式化时长:
Text( "temps : ${DateFormat("HH:mm:ss").format(DateTime(0, 0, 0, hours, minutes, seconds))}", style: const TextStyle( fontSize: 24, ), ),
这里HH代表两位24小时制小时,mm是两位分钟,ss是两位秒,会自动帮你补全不足两位的数字。
内容的提问来源于stack exchange,提问作者Kach
相关产品推荐
相关产品推荐

