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

Flutter TimePicker选中时间显示格式异常问题:需实现HH:mm标准格式显示

解决Flutter TimePicker时间显示无前置零的问题

这个问题很常见,因为TimeOfDay的hour和minute属性返回的是整数类型,当数值小于10时直接拼接就会丢失前置零。要实现HH:mm的标准格式显示,我们只需要把整数格式化为两位带前置零的字符串即可,同时还要处理用户取消选择时间的情况(避免空指针异常)。

第一步:完善时间选择的空值处理

当用户点击时间选择器的取消按钮时,showTimePicker会返回null,所以我们需要先判断是否获取到有效时间再更新状态,避免后续格式化时出现异常:

_pickTime() async {
  TimeOfDay? time = await showTimePicker(
    context: context,
    initialTime: pickedTime,
  );
  // 仅当用户选择了有效时间时才更新状态
  if (time != null) {
    setState(() {
      pickedTime = time;
    });
  }
}

第二步:修改时间格式化逻辑

我们可以使用Dart字符串的padLeft(2, '0')方法,确保数字始终以两位形式展示,把小时和分钟都处理成带前置零的字符串:

ListTile(
  title: Text(
    '${pickedTime.hour.toString().padLeft(2, '0')}:${pickedTime.minute.toString().padLeft(2, '0')}',
  ),
  trailing: const Icon(Icons.timer, size: 45),
  onTap: _pickTime,
)

这样修改后,不管选中的是04:05还是12:30,都会以标准的两位数字格式正确显示啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:37:28