Flutter 中优雅地将数字格式化为各种国家的货币
介绍一种优雅地将数字格式化为各种国家的货币的方法
发布于 星期一,六月 10 2024
准备
安装 intl
这个包
flutter pub add intl
说明
对于货币来说,一般数据库中不会直接存储货币对应的值,一般存储的是放大100倍后的值。比如:986人民币,对应数据库中存的值是 98600
; 999.99 人民币对应数据库中存的值是 99999
。
使用
**注意:后端返回的数据 99999
是被放大 100 倍后的数据,我们展示的时候需要除以 100 **
import "package:intl/intl.dart";
/// 在 int 类型的数据上扩展 toJPY toCNY toUSD 3个方法
extension IntExt on int {
/// 格式化为日元
String toJPY({bool symbol = false}) {
return NumberFormat.currency(
locale: "ja",
symbol: symbol ? "¥" : "",
).format(this / 100);
}
/// 格式化为人民币
String toCNY({bool symbol = false}) {
return NumberFormat.currency(
locale: "zh_CN",
symbol: symbol ? "¥" : "",
).format(this / 100);
}
/// 格式化为美元
String toUSD({bool symbol = false}) {
return NumberFormat.currency(
locale: "en_US",
symbol: symbol ? "\$" : "",
).format(this / 100);
}
}
假设上面的代码都放到 lib/extends/currency.dart
中,当我们需要把货币转换为对应的格式时可以 intValue.toCNY()、intValue.toJPY()、intValue.toUSD()、
使用
// 需要导入之前的代码,否则无法使用 int 的扩展方法
import "extends/currency.dart";
void example() {
debugPrint(20000.toJPY()); // ¥200
debugPrint(999999.toCNY()); // ¥9,999.99
debugPrint(98600.toUSD()); // $986
}
- Flutter