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

Flutter中如何设置数字格式以点作为千位分隔符?

解决Flutter越南语环境下数字千位分隔符为点的问题

1. 添加intl依赖包

Flutter的数字格式化依赖intl包,先在项目根目录的pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.18.1 # 可替换为最新版本

添加后执行命令安装依赖:

flutter pub get

2. 配置应用本地化支持

在lib/main.dart中,为你的MaterialApp/CupertinoApp配置本地化代理,指定支持越南语(vi_VN):

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      // 配置本地化代理
      localizationsDelegates: const [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      // 指定支持的语言
      supportedLocales: const [
        Locale('vi', 'VN'),
      ],
      // 设置默认语言为越南语
      locale: const Locale('vi', 'VN'),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    // 按越南语规则格式化数字
    String formattedNumber = NumberFormat.decimalPattern('vi_VN').format(1234567);
    return Scaffold(
      appBar: AppBar(title: const Text('数字格式化示例')),
      body: Center(
        child: Text('$formattedNumber VND'), // 最终显示:1.234.567 VND
      ),
    );
  }
}

3. 关键说明

  • NumberFormat.decimalPattern('vi_VN')会自动遵循越南语本地化规则,将千位分隔符设置为点(.)
  • 如果需要直接格式化货币,也可以用NumberFormat.currency(locale: 'vi_VN', symbol: 'VND'),可根据需求调整小数位等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:45:46