FlutterMoneyFormatter
FlutterMoneyFormatter 是一个 Flutter 扩展,可根据您喜欢的特性格式化各种货币,无需绑定任何本地化。

安装
有关安装FlutterMoneyFormatter的完整步骤,请参阅安装指南。
用法
导入库
import 'package:flutter_money_formatter/flutter_money_formatter.dart';
入门
要能够将您的double值格式化为您想要的各种格式,您首先需要像下面这样创建一个FlutterMoneyFormatter实例
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(
amount: 12345678.9012345
);
注意,上面的代码仍然使用默认配置,如此处所述。
之后,您可以按如下方式请求各种格式的结果
// normal form
print(fmf.output.nonSymbol); // 12,345,678.90
print(fmf.output.symbolOnLeft); // $ 12,345,678.90
print(fmf.output.symbolOnRight); // 12,345,678.90 $
print(fmf.output.fractionDigitsOnly); // 90
print(fmf.output.withoutFractionDigits); // 12,345,678
// compact form
print(fmf.output.compactNonSymbol) // 12.3M
print(fmf.output.compactSymbolOnLeft) // $ 12.3M
print(fmf.output.compactSymbolOnRight) // 12.3M $
如果您将输出格式使用几次,我强烈建议您初始化一个变量,如下例所示
MoneyFormatterOutput fo = fmf.output;
或者直接在初始化FlutterMoneyFormatter实例时,如下例所示
MoneyFormatterOutput fo = FlutterMoneyFormatter(
amount: 12345678.9012345
).output;
这样,您可以更轻松地直接获取值,如下例所示
// normal form
print(fo.nonSymbol); // 12,345,678.90
print(fo.symbolOnLeft); // $ 12,345,678.90
print(fo.symbolOnRight); // 12,345,678.90 $
print(fo.fractionDigitsOnly); // 90
print(fo.withoutFractionDigits); // 12,345,678
// compact form
print(fo.compactNonSymbol) // 12.3M
print(fo.compactLeftSymbol) // $ 12.3M
print(fo.compactRightSymbol) // 12.3M $
请参阅演示部分以获取更多信息。
配置
要根据您的需求调整格式,可以通过settings参数进行设置
FlutterMoneyFormatter fmf = new FlutterMoneyFormatter(
amount: 12345678.9012345,
settings: MoneyFormatterSettings(
symbol: 'IDR',
thousandSeparator: '.',
decimalSeparator: ',',
symbolAndNumberSeparator: ' ',
fractionDigits: 3,
compactFormatType: CompactFormatType.sort
)
)
当然,您不必像上面的示例那样在settings(MoneyFormatterSettings)参数中初始化所有配置。您可以更改上述一个或多个配置。这是因为上述每个配置都不是强制性的,并且具有默认值。
属性、方法和函数
-
FlutterMoneyFormatter
| 属性名称 | 数据类型 | 描述 |
|---|---|---|
amount |
双精度 |
将要格式化的金额数字。 |
settings |
MoneyFormatterSettings |
参见此处。 |
输出 |
MoneyFormatterOutput |
参见此处。 |
比较器 |
MoneyFormatterCompare |
参见此处。 |
copyWith |
FlutterMoneyFormatter |
参见此处 |
fastCalc |
FlutterMoneyFormatter |
参见此处 |
-
MoneyFormatterSettings
| 配置属性 | 数据类型 | 默认值 | 描述 |
|---|---|---|---|
符号 |
字符串 |
$(美元符号) |
将在格式化输出中使用的符号。 |
千位分隔符 |
字符串 |
, |
将在格式化输出中用作千位分隔符的字符。 |
小数分隔符 |
字符串 |
. |
将在格式化输出中用作小数分隔符的字符。 |
小数位数 |
整数 |
2 |
将在格式化输出中使用的小数位数。 |
符号与数字分隔符 |
字符串 |
' '(空格) |
将用作格式化数字和货币符号之间分隔符的字符。 |
紧凑格式类型 |
CompactFormatType |
CompactFormatType.short |
参见此处。 |
-
CompactFormatType
您可以通过M或million(百万)或T或trillion(万亿)等来更改百万的紧凑格式类型。依此类推。此类型仅支持两种类型,如下所述
| Value | 描述 |
|---|---|
CompactFormatType.short |
用于使紧凑格式显示为短文本。 |
CompactFormatType.long |
用于使紧凑格式显示为长文本。 |
-
MoneyFormatterOutput
您可以通过MoneyFormatterOutput实例中的属性来使用符合您需求的格式。
| 属性名称 | 数据类型 | 描述 |
|---|---|---|
无符号 |
字符串 |
货币格式化的结果是正常的,没有货币符号。例如:12,345,678.90 |
符号在左 |
字符串 |
普通货币格式化结果,货币符号在左侧。例如:$ 12,345,678.90 |
符号在右 |
字符串 |
普通货币格式化结果,货币符号在右侧。例如:12,345,678.90 $ |
紧凑无符号 |
字符串 |
货币格式化的结果是紧凑的,没有货币符号。例如:12.3M |
紧凑符号在左 |
字符串 |
货币格式化的结果是紧凑的,货币符号在左侧。例如:$ 12.3M |
紧凑符号在右 |
字符串 |
货币格式化的结果是紧凑的,货币符号在右侧。例如:12.3M $ |
仅小数部分 |
字符串 |
仅提供小数部分。例如:90 |
无小数位数 |
字符串 |
提供不带小数的值。例如:12,345,678 |
-
MoneyFormatterCompare
| 方法 | 参数 | 描述 |
|---|---|---|
小于 |
amount |
检查当前实例金额是否小于[金额]。 |
大于 |
amount |
检查当前实例金额是否大于[金额]。 |
等于 |
amount |
检查当前实例金额是否等于[金额]。 |
等于或小于 |
amount |
检查当前实例金额是否等于或小于[金额]。 |
等于或大于 |
amount |
检查当前实例金额是否等于或大于[金额]。 |
比较器使用示例
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345678.9012345);
double comparerValue = 5678.9012;
print(fmf.comparator.isEqual(comparerValue)); // false
print(fmf.comparator.isGreaterThan(comparerValue)); // true
FastCalc
fastCalc是一个可以用于执行您可能需要的各种快速计算过程的函数。在实现时,fastCalc函数会输出一个FlutterMoneyFormatter实例,因此您可以通过链式方法一次执行多个计算函数。
功能:
FlutterMoneyFormatter fastCalc({
@required FastCalcType type,
@required double amount
})
实施:
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345.678);
fmf.fastCalc(type: FastCalcType.addition, amount: 1.111);
fmf.fastCalc(type: FastCalcType.substraction, amount: 2.222);
print(fmf.output.nonSymbol); // 12,345.68
由于它支持链式过程,因此上面的示例可以缩短如下
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345.678)
.fastCalc(type: FastCalcType.addition, amount: 1.111)
.fastCalc(type: FastCalcType.substraction, amount: 2.222);
print(fmf.output.nonSymbol); // 12,345.68
fastCalc函数使用的type参数具有FastCalcType数据类型,它是一个枚举。下表是对FastCalcType枚举的解释
| 目录 | 名称 | 描述 |
|---|---|---|
| 0 | 加法 | 用于进行加法计算。 |
| 1 | 减法 | 用于进行减法计算。 |
| 2 | 乘法 | 用于进行乘法计算。 |
| 3 | 除法 | 用于进行除法计算。 |
| 4 | 百分比加法 | 用于根据百分比进行加法计算。 |
| 5 | 百分比减法 | 用于根据百分比进行减法计算。 |
复制实例
出于某些原因,您可能需要复制instance,而只需要更改一些配置。要做到这一点,您可以使用如下的copyWith方法
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345678.9012345);
print(fmf.output.symbolOnLeft); // $ 12,345,678.90
print(fmf.copyWith(symbol: 'IDR', symbolAndNumberSeparator: '-').output.symbolOnLeft); // IDR-12,345,678.90