Flutter金融功能插件finance的使用

Flutter金融功能插件finance的使用

finance 是一个用于金融计算的Dart基础包。它提供了一组高级函数和类,使金融比率的计算变得简单,并且模仿了电子表格中的计算方式。该库独立于平台,支持iOS和Android。

安装

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  finance: ^x.x.x

然后运行 flutter pub get 来安装依赖。

使用说明

Future Value 计算

未来价值计算是指在一定时间内投资的最终金额。例如,现在存入1000美元,每月再存入100美元,年利率为7%,按月复利,30年后会有多少钱?

print(Finance.fv(rate: 0.07 / 12, nper: 30 * 12, pmt: -100, pv: -1000));

输出结果约为:130113.59

Payments 计算

支付计算是指为了偿还贷款所需的每月支付金额。例如,一笔100,000美元的贷款,年利率为2.5%,10年内还清,每月需要支付多少?

print(Finance.pmt(rate: 0.025 / 12, nper: 10 * 12, pv: 100000));

输出结果约为:942.69

Number of Period 计算

周期数计算是指以固定月供偿还贷款所需的月份数。例如,每月支付500美元,贷款金额为10,000美元,年利率为3%,需要多久才能还清?

print(Finance.nper(rate: 0.03 / 12, pmt: -500, pv: 10000));

输出结果约为:20.00

Principal and Interest Payment 计算

本金和利息支付计算是指贷款的分期还款表及其总利息。例如,一笔为期一年、金额为5000美元、年利率为10%的贷款,按月复利,其分期还款表及总利息是多少?

final Iterable<Map<String, num>> payments = 
    List<int>.generate(12, (int index) => index + 1).map((int per) =>
        <String, num>{
          'per': per,
          'pmt': Finance.pmt(rate: 0.1 / 12, nper: 1 * 12, pv: 5000),
          'ppmt': Finance.ppmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
          'ipmt': Finance.ipmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
        });

payments.forEach(print);

final num interestPaid = 
    payments.fold(0, (num p, Map<String, num> c) => p + c['ipmt']);
print(interestPaid);

输出结果为:

  • 分期还款表
  • 总利息约为:275.00

Present Value 计算

现值计算是指为了达到未来的某个目标金额,现在需要投入的初始资金。例如,为了在10年后每月存入100美元,累计总额达到20,000美元,年利率为7%,按月复利,现在的初始投资应该是多少?

print(Finance.pv(rate: 0.07 / 12, nper: 10 * 12, pmt: -100, fv: 20000));

输出结果约为:1339.28

Interest Rate 计算

利率计算是指贷款的月利率或年利率。例如,一笔8000美元的贷款,期限为5年,每月支付152.5美元,其月利率和年利率是多少?

print(Finance.rate(nper: 60, pmt: -152.5, pv: 8000, fv: 0));

输出结果为:月利率:0.45%年利率:5.42%

Net Present Value 计算

净现值计算是指投资的当前价值。例如,一笔投资需要先投入15,000美元,然后在固定间隔内依次提取1500、2500、3500、4500、6000美元,假设期末价值为0,折现率为5%,其净现值是多少?

print(Finance.npv(rate: 0.05, values: <num>[-15000, 1500, 2500, 3500, 4500, 6000]));

输出结果约为:122.89

Internal Rate of Return 计算

内部收益率计算是指投资的内部收益率。例如,一笔投资需要先投入15,000美元,然后在固定间隔内依次提取1500、2500、3500、4500、6000美元,假设期末价值为0,其内部收益率是多少?

print(Finance.irr(values: <num>[-15000, 1500, 2500, 3500, 4500, 6000]));

输出结果约为:5.24%

完整示例代码

以下是一个完整的示例代码,展示了如何使用 finance 插件进行各种金融计算:

import 'package:finance/finance.dart';

void main(List<String> arguments) {
  // Future Value 计算
  print(Finance.fv(rate: 0.07 / 12, nper: 30 * 12, pmt: -100, pv: -1000));

  // Payments 计算
  print(Finance.pmt(rate: 0.025 / 12, nper: 10 * 12, pv: 100000));

  // Number of Period 计算
  print(Finance.nper(rate: 0.03 / 12, pmt: -500, pv: 10000));

  // Principal and Interest Payment 计算
  final Iterable<Map<String, num>> payments = 
      List<int>.generate(12, (int index) => index + 1).map((int per) =>
          <String, num>{
            'per': per,
            'pmt': Finance.pmt(rate: 0.1 / 12, nper: 1 * 12, pv: 5000),
            'ppmt': Finance.ppmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
            'ipmt': Finance.ipmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
          });

  payments.forEach(print);
  final num interestPaid = 
      payments.fold(0, (num p, Map<String, num> c) => p + c['ipmt']);
  print(interestPaid);

  // Present Value 计算
  print(Finance.pv(rate: 0.07 / 12, nper: 10 * 12, pmt: -100, fv: 20000));

  // Interest Rate 计算
  print(Finance.rate(nper: 60, pmt: -152.5, pv: 8000, fv: 0));

  // Internal Rate of Return 计算
  print(Finance.irr(values: <num>[-15000, 1500, 2500, 3500, 4500, 6000]));

  // Net Present Value 计算
  print(Finance.npv(rate: 0.05, values: <num>[-15000, 1500, 2500, 3500, 4500, 6000]));
}

更多关于Flutter金融功能插件finance的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter金融功能插件finance的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


finance 是一个用于金融计算的 Flutter 插件,主要用于执行常见的金融计算,如贷款支付、未来值、现值等。它可以帮助开发者在应用中轻松集成金融计算功能。

安装

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

dependencies:
  flutter:
    sdk: flutter
  finance: ^2.0.0

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

使用示例

以下是一些常见的使用示例:

1. 计算贷款支付 (PMT)

import 'package:finance/finance.dart';

void main() {
  double rate = 0.05 / 12; // 月利率
  int nper = 30 * 12; // 贷款期限(月)
  double pv = 200000; // 贷款金额

  double pmt = Finance.pmt(rate, nper, pv);
  print('每月还款金额: \$${pmt.toStringAsFixed(2)}');
}

2. 计算未来值 (FV)

import 'package:finance/finance.dart';

void main() {
  double rate = 0.05 / 12; // 月利率
  int nper = 30 * 12; // 投资期限(月)
  double pmt = -500; // 每月投资金额(负数表示支出)

  double fv = Finance.fv(rate, nper, pmt);
  print('未来值: \$${fv.toStringAsFixed(2)}');
}

3. 计算现值 (PV)

import 'package:finance/finance.dart';

void main() {
  double rate = 0.05 / 12; // 月利率
  int nper = 30 * 12; // 投资期限(月)
  double pmt = -500; // 每月投资金额(负数表示支出)

  double pv = Finance.pv(rate, nper, pmt);
  print('现值: \$${pv.toStringAsFixed(2)}');
}

4. 计算利率 (RATE)

import 'package:finance/finance.dart';

void main() {
  int nper = 30 * 12; // 贷款期限(月)
  double pmt = -1073.64; // 每月还款金额(负数表示支出)
  double pv = 200000; // 贷款金额

  double rate = Finance.rate(nper, pmt, pv);
  print('月利率: ${(rate * 100).toStringAsFixed(2)}%');
}

5. 计算贷款期限 (NPER)

import 'package:finance/finance.dart';

void main() {
  double rate = 0.05 / 12; // 月利率
  double pmt = -1073.64; // 每月还款金额(负数表示支出)
  double pv = 200000; // 贷款金额

  double nper = Finance.nper(rate, pmt, pv);
  print('贷款期限: ${(nper / 12).toStringAsFixed(2)} 年');
}
回到顶部