FlutterMoneyFormatter

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

FlutterMoneyFormatter

安装

有关安装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
    )
)

当然,您不必像上面的示例那样在settingsMoneyFormatterSettings)参数中初始化所有配置。您可以更改上述一个或多个配置。这是因为上述每个配置都不是强制性的,并且具有默认值。


属性、方法和函数

  • FlutterMoneyFormatter

属性名称 数据类型 描述
amount 双精度 将要格式化的金额数字。
settings MoneyFormatterSettings 参见此处。
输出 MoneyFormatterOutput 参见此处。
比较器 MoneyFormatterCompare 参见此处。
copyWith FlutterMoneyFormatter 参见此处
fastCalc FlutterMoneyFormatter 参见此处
  • MoneyFormatterSettings

配置属性 数据类型 默认值 描述
符号 字符串 $(美元符号) 将在格式化输出中使用的符号。
千位分隔符 字符串 , 将在格式化输出中用作千位分隔符的字符。
小数分隔符 字符串 . 将在格式化输出中用作小数分隔符的字符。
小数位数 整数 2 将在格式化输出中使用的小数位数。
符号与数字分隔符 字符串 ' '(空格) 将用作格式化数字和货币符号之间分隔符的字符。
紧凑格式类型 CompactFormatType CompactFormatType.short 参见此处。
  • CompactFormatType

您可以通过Mmillion(百万)或Ttrillion(万亿)等来更改百万的紧凑格式类型。依此类推。此类型仅支持两种类型,如下所述

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

GitHub

https://github.com/fadhly-permata/flutter_money_formatter