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
相关产品推荐
相关产品推荐

