Flutter货币格式化插件flutter_money_formatter的使用
Flutter货币格式化插件flutter_money_formatter
的使用
概述
flutter_money_formatter
是一个用于格式化各种货币类型的 Flutter 扩展库,无需依赖任何本地化设置。它可以帮助开发者轻松地将数字金额转换为用户友好的货币格式。
依赖项
此插件依赖于 intl
库,用于处理国际化的支持。
截图
安装
要安装 flutter_money_formatter
,请在项目的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_money_formatter: ^2.0.0
然后运行以下命令以获取最新版本:
flutter pub get
更多安装步骤可以查看安装指南。
使用方法
导入库
首先需要导入 flutter_money_formatter
库:
import 'package:flutter_money_formatter/flutter_money_formatter.dart';
基本用法
创建一个 FlutterMoneyFormatter
实例并格式化金额:
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(
amount: 12345678.9012345
);
获取格式化结果
可以通过 output
属性访问不同格式的结果:
// 正常格式
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
// 简约格式
print(fmf.output.compactNonSymbol); // 输出: 12.3M
print(fmf.output.compactSymbolOnLeft); // 输出: $ 12.3M
print(fmf.output.compactSymbolOnRight); // 输出: 12.3M $
如果需要多次使用格式化结果,建议将 output
属性赋值给变量:
MoneyFormatterOutput fo = fmf.output;
print(fo.nonSymbol); // 输出: 12,345,678.90
配置参数
通过 settings
参数自定义格式化行为:
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(
amount: 12345678.9012345,
settings: MoneyFormatterSettings(
symbol: 'IDR',
thousandSeparator: '.',
decimalSeparator: ',',
symbolAndNumberSeparator: ' ',
fractionDigits: 3,
compactFormatType: CompactFormatType.short
)
);
可用的配置项及其默认值如下表所示:
属性名称 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
symbol |
String |
$ (美元符号) |
货币符号 |
thousandSeparator |
String |
, |
千位分隔符 |
decimalSeparator |
String |
. |
小数点 |
fractionDigits |
int |
2 |
小数部分的位数 |
symbolAndNumberSeparator |
String |
' ' (空格) |
数字与符号之间的分隔符 |
compactFormatType |
CompactFormatType |
short |
简约格式类型(short 或 long ) |
快速计算
fastCalc
方法允许快速执行加减乘除等运算,并支持百分比计算:
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
比较器
通过 comparator
属性比较两个金额大小:
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345678.9012345);
double comparerValue = 5678.9012;
print(fmf.comparator.isEqual(comparerValue)); // 输出: false
print(fmf.comparator.isGreaterThan(comparerValue)); // 输出: true
示例代码
以下是一个完整的示例代码,展示如何使用 flutter_money_formatter
进行货币格式化:
import 'package:flutter/material.dart';
import 'package:flutter_money_formatter/flutter_money_formatter.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
TextStyle titleStyle = TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold);
TextStyle subtitleStyle = TextStyle(fontSize: 20.0);
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(amount: 12345678.9012345);
MoneyFormatterOutput fo = fmf.output;
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Money Formatter Demo'),
),
body: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(),
child: Container(
padding: EdgeInsets.all(15.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
ListTile(
title: Text('FormattedNonSymbol:', style: titleStyle),
subtitle: Text(fo.nonSymbol, style: subtitleStyle),
),
ListTile(
title: Text('FormattedLeftSymbol:', style: titleStyle),
subtitle: Text(fo.symbolOnLeft, style: subtitleStyle),
),
ListTile(
title: Text('FormattedRightSymbol:', style: titleStyle),
subtitle: Text(fo.symbolOnRight, style: subtitleStyle),
),
ListTile(
title: Text('FormattedWithoutDecimal:', style: titleStyle),
subtitle: Text(fo.withoutFractionDigits, style: subtitleStyle),
),
ListTile(
title: Text('DecimalOnly:', style: titleStyle),
subtitle: Text(fo.fractionDigitsOnly, style: subtitleStyle),
),
ListTile(
title: Text('FormattedNonSymbolCustom:', style: titleStyle),
subtitle: Text(
fmf.copyWith(amount: 123.4567, fractionDigits: 4).output.nonSymbol,
style: subtitleStyle,
),
),
ListTile(
title: Text('FormattedLeftSymbolCustom:', style: titleStyle),
subtitle: Text(
fmf.copyWith(symbol: 'IDR', symbolAndNumberSeparator: '-').output.symbolOnLeft,
style: subtitleStyle,
),
),
ListTile(
title: Text('CompactNonSymbol:', style: titleStyle),
subtitle: Text(
fmf.copyWith(amount: 12345678987654321.9012345).output.compactNonSymbol,
style: subtitleStyle,
),
),
ListTile(
title: Text('CompactLongNonSymbol:', style: titleStyle),
subtitle: Text(
fmf.copyWith(
amount: 12345678987654321.9012345,
compactFormatType: CompactFormatType.long,
).output.compactNonSymbol,
style: subtitleStyle,
),
),
ListTile(
title: Text('CompactLeftSymbol:', style: titleStyle),
subtitle: Text(
fmf.copyWith(amount: 1234.56789).output.compactSymbolOnLeft,
style: subtitleStyle,
),
),
ListTile(
title: Text('CompactRightSymbol:', style: titleStyle),
subtitle: Text(
fmf.copyWith(
amount: 123456.7890,
compactFormatType: CompactFormatType.short,
).output.compactSymbolOnRight,
style: subtitleStyle,
),
),
ListTile(
title: Text('Fast Calc', style: titleStyle),
subtitle: Text(
'${FlutterMoneyFormatter(amount: 12345.678).fastCalc(type: FastCalcType.addition, amount: 1.111).fastCalc(type: FastCalcType.substraction, amount: 2.222).output.nonSymbol}',
style: subtitleStyle,
),
),
ListTile(
title: Text('Fast Calc', style: titleStyle),
subtitle: Text(
'${fmf.fastCalc(type: FastCalcType.addition, amount: 1234.567).fastCalc(type: FastCalcType.substraction, amount: 234.5678).output.nonSymbol}',
style: subtitleStyle,
),
),
ListTile(
title: Text('Compare IsEqual (=)', style: titleStyle),
subtitle: Text('${fmf.comparator.isEqual(5000)}', style: subtitleStyle),
),
],
),
),
),
),
),
);
}
}
更多关于Flutter货币格式化插件flutter_money_formatter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter货币格式化插件flutter_money_formatter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_money_formatter
是一个用于格式化货币的 Flutter 插件,它可以帮助你将数字格式化为带有货币符号、千位分隔符、小数位等的货币格式。以下是如何使用 flutter_money_formatter
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_money_formatter
依赖:
dependencies:
flutter:
sdk: flutter
flutter_money_formatter: ^0.9.0
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 flutter_money_formatter
包:
import 'package:flutter_money_formatter/flutter_money_formatter.dart';
3. 使用 FlutterMoneyFormatter
你可以使用 FlutterMoneyFormatter
来格式化货币。以下是一个简单的示例:
void main() {
double amount = 1234567.89;
// 创建 FlutterMoneyFormatter 实例
FlutterMoneyFormatter fmf = FlutterMoneyFormatter(
amount: amount,
settings: MoneyFormatterSettings(
symbol: '\$', // 货币符号
thousandSeparator: ',', // 千位分隔符
decimalSeparator: '.', // 小数分隔符
symbolAndNumberSeparator: ' ', // 货币符号和数字之间的分隔符
fractionDigits: 2, // 小数位数
),
);
// 获取格式化后的货币
MoneyFormatterOutput formatted = fmf.output;
print('Without Symbol: ${formatted.nonSymbol}');
print('With Symbol: ${formatted.symbolOnLeft}');
print('Compact Format: ${formatted.compactNonSymbol}');
print('Compact Format with Symbol: ${formatted.compactSymbolOnLeft}');
}
4. 输出结果
运行上述代码后,你将得到以下输出:
Without Symbol: 1,234,567.89
With Symbol: \$ 1,234,567.89
Compact Format: 1.23M
Compact Format with Symbol: \$ 1.23M