Flutter货币转换插件forex_conversion的使用

Flutter货币转换插件forex_conversion的使用

forex_conversion 是一个用于快速获取外汇价格并进行货币转换的Flutter插件。本文将介绍如何使用这个插件,包括其功能、安装步骤和示例代码。

功能

  • 获取开放市场上所有货币的价格。
  • 使用开放市场上的价格将一种货币转换为另一种货币。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  forex_conversion: ^latest_version

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

使用方法

获取所有货币的价格

如果你想获取所有货币相对于美元的价格,可以使用以下代码:

import 'package:forex_conversion/forex_conversion.dart';

final fx = Forex();
Map<String, double> allPrices = await fx.getAllCurrenciesPrices();
print("Exchange rate of PKR: ${allPrices['PKR']}");
print("Exchange rate of EUR: ${allPrices['EUR']}");
print("Exchange rate of TRY: ${allPrices['TRY']}");

获取支持的所有货币列表

你可以轻松地获取所有支持的货币列表:

final fx = Forex();
List<String> availableCurrencies = await fx.getAvailableCurrencies();
print("The list of all available currencies: $availableCurrencies");

货币转换

对于简单的货币转换,可以使用以下方法进行即时转换。请确保输入的货币是支持的货币之一,可以通过上述方法获取支持的货币列表。

final fx = Forex();
double myPriceInPKR = await fx.getCurrencyConverted("USD", "PKR", 252.5);
print("252.5 USD in PKR: $myPriceInPKR");

初始化默认值

你可以在初始化类时设置默认的目标货币、源货币和小数位数:

final fx = Forex(defaultDestinationCurrency: 'PKR', defaultSourceCurrency: 'EUR', defaultNumberOfDecimals: 1);

示例Demo

下面是一个完整的示例应用,展示了如何使用 forex_conversion 插件:

// ignore_for_file: depend_on_referenced_packages, avoid_print

import 'package:flutter/material.dart';
import 'package:forex_conversion/forex_conversion.dart';

void main() => runApp(const MyApp());

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _loading = false;
  final fx = Forex();

  Future<void> testCurrency() async {
    loadingState();
    final Map<String, double> allPrices = await fx.getAllCurrenciesPrices();
    print("Exchange rate of PKR: ${allPrices['PKR']}");
    print("Exchange rate of EUR: ${allPrices['EUR']}");
    print("Exchange rate of TRY: ${allPrices['TRY']}");

    final List<String> availableCurrencies = await fx.getAvailableCurrencies();
    print("The list of all available currencies: $availableCurrencies");

    final double myPriceInPKR = await fx.getCurrencyConverted(
        sourceCurrency: "USD", destinationCurrency: "PKR", sourceAmount: 252.5);
    print("252.5 USD in PKR: $myPriceInPKR");
    print("Default exchange rate (USD - BRL): ${await fx.getCurrencyConverted()}");
    loadingState();
  }

  void loadingState() {
    setState(() {
      _loading = !_loading;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
          colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.indigo)
              .copyWith(secondary: Colors.pinkAccent)),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Forex Conversion Example App'),
        ),
        body: Center(
          child: _loading
              ? const CircularProgressIndicator()
              : TextButton(
                  onPressed: testCurrency,
                  child: const Text(
                    'Try it',
                    style: TextStyle(fontSize: 24),
                  ),
                ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用forex_conversion插件进行货币转换的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了forex_conversion依赖:

dependencies:
  flutter:
    sdk: flutter
  forex_conversion: ^最新版本号 # 请替换为实际最新版本号

然后,运行flutter pub get来获取依赖。

接下来,你可以在你的Flutter项目中导入并使用forex_conversion插件。以下是一个简单的示例,展示如何进行货币转换:

import 'package:flutter/material.dart';
import 'package:forex_conversion/forex_conversion.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String fromCurrency = 'USD';
  String toCurrency = 'EUR';
  double amount = 1.0;
  String convertedAmount = '';
  bool isLoading = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Currency Converter'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              TextField(
                decoration: InputDecoration(labelText: 'Amount'),
                keyboardType: TextInputType.numberWithOptions(decimal: true),
                onChanged: (value) {
                  setState(() {
                    amount = double.tryParse(value) ?? 0.0;
                  });
                },
              ),
              SizedBox(height: 16),
              DropdownButtonFormField<String>(
                value: fromCurrency,
                hint: Text('From Currency'),
                onChanged: (value) {
                  setState(() {
                    fromCurrency = value!;
                  });
                },
                items: [
                  'USD', 'EUR', 'JPY', 'GBP', 'AUD', 'CAD', // 添加你需要的货币代码
                ].map<DropdownMenuItem<String>>((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Text(value),
                  );
                }).toList(),
              ),
              SizedBox(height: 16),
              DropdownButtonFormField<String>(
                value: toCurrency,
                hint: Text('To Currency'),
                onChanged: (value) {
                  setState(() {
                    toCurrency = value!;
                  });
                },
                items: [
                  'USD', 'EUR', 'JPY', 'GBP', 'AUD', 'CAD', // 添加你需要的货币代码
                ].map<DropdownMenuItem<String>>((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Text(value),
                  );
                }).toList(),
              ),
              SizedBox(height: 16),
              ElevatedButton(
                onPressed: () async {
                  setState(() {
                    isLoading = true;
                    convertedAmount = '';
                  });
                  try {
                    double result = await ForexConversion.convertCurrency(
                      from: fromCurrency,
                      to: toCurrency,
                      amount: amount,
                    );
                    setState(() {
                      convertedAmount = result.toStringAsFixed(2);
                      isLoading = false;
                    });
                  } catch (e) {
                    setState(() {
                      convertedAmount = 'Error: ${e.message}';
                      isLoading = false;
                    });
                  }
                },
                child: Text('Convert'),
              ),
              SizedBox(height: 16),
              if (convertedAmount.isNotEmpty)
                Text(
                  '$amount $fromCurrency = $convertedAmount $toCurrency',
                  style: TextStyle(fontSize: 20),
                ),
              if (isLoading)
                CircularProgressIndicator(),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,允许用户输入金额,选择源货币和目标货币,然后点击“Convert”按钮进行转换。转换结果会显示在页面上。

注意:ForexConversion.convertCurrency函数是异步的,因此我们使用await来等待结果。同时,我们使用setState来更新UI状态。

确保在实际应用中处理错误和异常情况,例如网络错误或API限制。此外,forex_conversion插件可能需要网络连接来获取最新的汇率数据,因此在实际应用中,你可能需要添加网络连接状态的检查。

回到顶部