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

Flutter Dart中为API返回数据添加千位分隔符的实现方法

解决Flutter中API数据添加千位分隔符(以“.”为分隔符)的问题

1. 先确认intl包的正确使用

之前用intl包没生效,大概率是初始化或数据类型处理的问题,先把基础流程走对:

  • 在pubspec.yaml里添加依赖:

    dependencies:
      flutter:
        sdk: flutter
      intl: ^0.18.1 # 用最新版本即可
    

    执行flutter pub get后,在页面文件中导入:

    import 'package:intl/intl.dart';
    
  • 创建适配你需求的格式化器:
    因为你要以“.”作为千位分隔符,直接用印尼地区的数字格式规则就能满足(印尼地区默认用“.”分隔千位,“,”分隔小数):

    final NumberFormat numberFormatter = NumberFormat.decimalPattern('id_ID');
    

    如果只需要格式化整数,也可以用自定义规则:

    final NumberFormat numberFormatter = NumberFormat('#,###', 'id_ID');
    

2. 在DataTable中应用格式化

修改你的DataCell代码,注意先确保data.rtup是数字类型(int/double),如果API返回的是字符串,要先转换:

DataCell(
  Text(
    // 假设data.rtup是int类型
    numberFormatter.format(data.rtup),
    // 如果是String类型,先转成数字:numberFormatter.format(int.parse(data.rtup)),
    style: const TextStyle(
      color: Color.fromARGB(255, 17, 17, 17),
      fontWeight: FontWeight.normal,
      fontSize: 12,
    ),
  ),
),

如果存在空值风险,记得加空处理:

numberFormatter.format(data.rtup ?? 0),

3. 不依赖intl包的替代方案

如果不想用第三方包,自己写个格式化函数也能实现:

String addThousandSeparator(int number) {
  return number.toString().replaceAllMapped(
    RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'),
    (match) => '${match[1]}.',
  );
}

然后在Text中直接调用:

Text(
  addThousandSeparator(data.rtup),
  // ...样式代码
),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:15:16