Flutter货币处理插件moneys的使用

Flutter货币处理插件moneys的使用

Moneys

Moneys 是一个用于管理货币和交易的类集合。它提供了多种功能来处理货币相关的数据。

Money 类

Money 类是这个包的核心之一。它有两个属性:amountcurrency(详见下文)。

为了将数据保存到数据库,它提供了 toMap() 方法;从数据库检索数据时,提供了 fromMap(Map<String, dynamic> map) 方法。

该类允许以本地化的方式显示货币值,并且可以使用“k”表示法(例如,“10,000 USD”可以写成“10k USD”)。

例如:

Money(
    amount: 1000.15,
    currency: Currency.eur,
)

此外,convert() 方法允许将一种货币金额转换为另一种货币金额。

Currency 枚举

在这个枚举中,列出了世界上所有的货币,根据 ISO 4217 标准。对于每种货币,它提供了以下属性:

  • alphabetic: 货币的字母表示(例如,美元是“USD”,总是大写)。
  • emojiFlag: 与货币对应的国旗表情符号。
  • exponent: 货币表示所需的十进制位数。如果适用,则返回 null
  • isFund: 布尔值,指示货币是否指基金。
  • name: 货币的完整名称。
  • numeric: 货币的数字表示。这些数字有三位。
  • symbol: 用于货币的符号。

通过 StringToCurrencyX 扩展(on String),提供了 toCurrency() 方法,该方法允许从字符串确定 Currency 的值。

ExchangeRate 类

这个类存储了汇率值,以便将一种货币的金额转换为另一种货币的金额。

MoneyTransaction 类

MoneyTransaction 类记录日期、金额和使用的交易方法。它还包含一个必需的参数 id,用于唯一标识交易。你应该确保其唯一性。

MoneyTransaction 根据它是收入还是支出进行分类(使用 ExpenseOrIncome 枚举)。使用的交易方法由 MoneyTransactionMethod 枚举的值指定。交易的更新频率由 Renewal 枚举的值指定。

Product 类

这个类建模了一个产品。用以下属性描述产品:brandcategorycostdescriptionidnameoriginprice

List<MoneyTransaction> 扩展方法

这些方法使管理交易历史变得简单。这些方法提供了以下功能:

  • 获取整个交易历史。
  • 向历史中添加一笔交易。
  • 从历史中移除一笔交易。
  • 在给定时间点获取所有交易(支出、收入或两者)。
  • 在给定时间点或之前获取所有交易(支出、收入或两者)。
  • 在给定时间点或之后获取所有交易(支出、收入或两者)。
  • 使用特定的交易方法获取所有交易。
  • 获取历史中价值小于(或小于等于)给定值的所有交易。
  • 获取历史中价值大于(或大于等于)给定值的所有交易。

Budget 类

使用 Budget 类管理预算。给它一个 name,指定大小 (size),指示 renewal 周期和起始日期 (start),并管理与该预算关联的交易列表 List<MoneyTransaction>

此外,这个类还有以下方法:

  • availablePercent(): 返回预算可用支出的百分比。
  • daysBetweenRenewals(): 返回从上次更新到下次更新之间的天数(相对于 from 日期和时间)。
  • lastRenewal(): 返回从 from 日期开始的最后一次更新。
  • nextRenewal(): 返回从 from 日期开始的下一次更新。
  • earned(): 返回总收入。可以根据 fromuntil 日期进行过滤。
  • spent(): 返回总支出。可以根据 fromuntil 日期进行过滤。
  • transactionsCurrencies(): 返回与预算相关的所有交易中使用的货币。

示例代码

下面是一个完整的示例代码,展示了如何使用 moneys 插件进行货币处理:

import 'package:moneys/moneys.dart';

void main() {
  // 创建一个货币对象
  Money money = Money(amount: 1000.15, currency: Currency.usd);
  
  // 输出货币对象
  print(money); // 输出: $1000.15 USD

  // 将货币对象转换为其他货币
  Money convertedMoney = money.convert(Currency.eur);
  print(convertedMoney); // 输出: €1000.15 EUR

  // 创建一个交易对象
  MoneyTransaction transaction = MoneyTransaction(
    id: "1",
    date: DateTime.now(),
    value: Money(amount: 100.0, currency: Currency.usd),
    method: MoneyTransactionMethod.cash,
    incomeOrExpense: ExpenseOrIncome.expense,
  );

  // 创建一个预算对象
  Budget budget = Budget(
    name: "Monthly Budget",
    size: Money(amount: 2000.0, currency: Currency.usd),
    start: DateTime.now(),
    renewal: Renewal.monthly,
  );

  // 添加交易到预算
  budget.addTransaction(transaction);

  // 获取预算中的总收入
  double totalEarned = budget.earned();
  print("Total Earned: $totalEarned USD");

  // 获取预算中的总支出
  double totalSpent = budget.spent();
  print("Total Spent: $totalSpent USD");
}

更多关于Flutter货币处理插件moneys的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter货币处理插件moneys的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


moneys 是一个用于处理货币的 Flutter 插件,它提供了多种功能来帮助开发者轻松地处理货币相关的操作,如格式化、解析、转换等。以下是 moneys 插件的使用指南:

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 moneys 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  moneys: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装插件。

2. 导入插件

在你的 Dart 文件中导入 moneys 插件:

import 'package:moneys/moneys.dart';

3. 创建货币实例

你可以使用 Money 类来创建一个货币实例。货币实例需要指定金额和货币代码(如 USDEUR 等)。

Money usd = Money.fromInt(1000, 'USD');  // 1000 美分,即 10.00 美元
Money eur = Money.fromInt(5000, 'EUR');  // 5000 欧分,即 50.00 欧元

4. 格式化货币

你可以使用 format 方法来格式化货币,使其符合特定地区的显示习惯。

String formattedUSD = usd.format('en_US');  // 输出: \$10.00
String formattedEUR = eur.format('de_DE');  // 输出: 50,00 €

5. 解析货币

你可以使用 Money.parse 方法来从字符串中解析出货币。

Money parsedUSD = Money.parse('\$10.00', 'USD');
Money parsedEUR = Money.parse('50,00 €', 'EUR');

6. 货币转换

moneys 插件还支持货币之间的转换。你可以使用 convertTo 方法将一种货币转换为另一种货币。

// 假设汇率为 1 USD = 0.85 EUR
Money convertedEUR = usd.convertTo('EUR', 0.85);

7. 其他操作

moneys 插件还支持其他一些操作,如加法、减法、乘法和除法等。

Money sum = usd + eur;
Money difference = usd - eur;
Money product = usd * 2;
Money quotient = usd / 2;

8. 获取货币信息

你可以使用 Money 类中的方法获取货币的相关信息,如符号、小数位数等。

String symbol = usd.currency.symbol;  // 输出: \$
int decimalDigits = usd.currency.decimalDigits;  // 输出: 2

9. 处理不同货币的小数位数

不同的货币可能有不同的小数位数。例如,日元(JPY)没有小数位,而美元(USD)有两位小数。moneys 插件会自动处理这些差异。

Money jpy = Money.fromInt(1000, 'JPY');  // 1000 日元
String formattedJPY = jpy.format('ja_JP');  // 输出: ¥1,000

10. 处理负数和零

moneys 插件也支持处理负数和零的情况。

Money negativeUSD = Money.fromInt(-1000, 'USD');  // -10.00 美元
Money zeroEUR = Money.fromInt(0, 'EUR');  // 0.00 欧元
回到顶部