Flutter从列表提取秒数并转换为时分秒格式的语法问题
问题解决:将秒数转换为小时、分钟、秒
你代码里的错误很明确:在Dart的数值计算逻辑中误用了字符串插值的$符号——这个符号仅在字符串模板场景下才需要使用,直接访问变量即可。另外要注意,Dart中实现整数除法必须用~/运算符,否则会返回浮点数,无法直接赋值给int类型变量。
修正后的完整代码
@override Widget build(BuildContext context) { var course = ModalRoute.of(context)!.settings.arguments as Map<String,dynamic>; // 先取出总秒数并确保类型为int int totalSeconds = course['temps'] as int; // 计算小时数:总秒数除以3600(1小时的秒数) int hours = totalSeconds ~/ 3600; // 计算扣除小时后剩余的秒数 int remainingAfterHours = totalSeconds % 3600; // 从剩余秒数中计算分钟数 int minutes = remainingAfterHours ~/ 60; // 最后剩下的就是秒数 int seconds = remainingAfterHours % 60; // 后续可直接使用hours、minutes、seconds三个变量 return Scaffold( // 你的UI渲染代码 ); }
代码逻辑说明
- 通过
as int做类型强转,避免动态类型带来的潜在问题 - 使用
~/完成整数除法,确保结果为整数 - 用
%取余运算替代减法,逻辑更简洁直观,也减少出错概率
内容的提问来源于stack exchange,提问作者Kach
相关产品推荐
相关产品推荐

