Flutter货币转换插件forex_currency_conversion的使用
Flutter货币转换插件forex_currency_conversion的使用
简介
forex_currency_conversion
是一个Flutter包,用于快速获取外汇价格并执行货币转换。它提供了以下特性:
- 获取所有外汇价格列表。
- 使用市场价格将一种货币转换为另一种货币。
安装与配置
在您的pubspec.yaml
文件中添加依赖项:
dependencies:
forex_currency_conversion: ^latest_version # 替换为最新版本号
然后运行flutter pub get
以安装该包。
使用方法
导入包
首先,在您的Dart文件顶部导入此包:
import 'package:forex_currency_conversion/forex_currency_conversion.dart';
基本用法
获取所有货币汇率
如果您想要获取相对于美元(USD)的所有货币的最新汇率,可以这样做:
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(sourceCurrency: "USD", destinationCurrency: "PKR", sourceAmount: 252.5);
print("252.5 USD in PKR: ${myPriceInPKR}");
初始化设置
您可以使用默认值初始化类,包括源货币、目标货币以及小数位数:
final fx = Forex(defaultDestinationCurrency: 'PKR', defaultSourceCurrency: 'EUR', defaultNumberOfDecimals: 1);
或者,您可以在创建时立即加载货币价格(如果之后不打算立即使用价格,请勿使用此选项,因为这是一个异步未等待的方法):
final fx = Forex(initializeOnCreation: true);
监听货币列表更新和结果
您可以检查货币列表更新的状态以及API调用期间是否发生错误:
final fx = Forex();
// 监听货币列表更新开始/停止状态
ValueNotifier<bool> runNotifier = fx.getRunNotifier;
// 检查货币列表更新是否仍在下载数据
bool runStatus = fx.getRunStatus;
// 监听货币列表更新结果是否有错误
ValueNotifier<String?> errorNotifier = fx.getErrorNotifier;
// 检查最近一次货币列表更新调用是否出错
String? runError = fx.getRunError;
示例应用
下面是一个完整的示例应用程序,展示了如何使用forex_currency_conversion
插件来构建一个简单的货币转换器界面。
import 'package:flutter/material.dart';
import 'package:forex_currency_conversion/forex_currency_conversion.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _loading = false;
final fx = Forex(initializeOnCreation: true);
Future<void> testCurrency() async {
print('Run Status');
print(fx.getRunStatus);
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()}");
print('Error check');
print(fx.getRunError);
loadingState();
}
void loadingState() {
setState(() {
_loading = !_loading;
});
}
printRunStatus() async {
print('Run Status');
print(fx.getRunStatus);
}
@override
void initState() {
super.initState();
printRunStatus();
}
@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),
),
),
),
),
);
}
}
以上就是关于forex_currency_conversion
插件的基本介绍和使用方法。希望这能帮助您更好地理解和使用这个强大的工具!如果您有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter货币转换插件forex_currency_conversion的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter货币转换插件forex_currency_conversion的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个使用Flutter中的forex_currency_conversion
插件进行货币转换的示例代码。这个插件可以帮助你从一种货币转换到另一种货币。
首先,确保在你的pubspec.yaml
文件中添加forex_currency_conversion
依赖项:
dependencies:
flutter:
sdk: flutter
forex_currency_conversion: ^最新版本号 # 请确保使用最新版本
然后运行flutter pub get
来获取依赖项。
接下来,在你的Flutter项目中,你可以按照以下步骤使用forex_currency_conversion
插件。
- 导入插件:
import 'package:forex_currency_conversion/forex_currency_conversion.dart';
- 初始化并调用API:
以下是一个完整的示例,展示了如何初始化插件并进行货币转换:
import 'package:flutter/material.dart';
import 'package:forex_currency_conversion/forex_currency_conversion.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Currency Conversion App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CurrencyConversionScreen(),
);
}
}
class CurrencyConversionScreen extends StatefulWidget {
@override
_CurrencyConversionScreenState createState() => _CurrencyConversionScreenState();
}
class _CurrencyConversionScreenState extends State<CurrencyConversionScreen> {
final ForexCurrencyConversion _forex = ForexCurrencyConversion();
String _amount = '';
String _fromCurrency = 'USD';
String _toCurrency = 'EUR';
String _convertedAmount = '';
String _error = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Currency Conversion'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
decoration: InputDecoration(labelText: 'Amount'),
keyboardType: TextInputType.numberWithOptions(decimal: true),
onChanged: (value) {
setState(() {
_amount = value;
});
},
),
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(),
),
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(),
),
ElevatedButton(
onPressed: () async {
setState(() {
_convertedAmount = '';
_error = '';
});
double amount = double.tryParse(_amount) ?? 0.0;
if (amount > 0) {
try {
double converted = await _forex.convertCurrency(
amount,
fromCurrency: _fromCurrency,
toCurrency: _toCurrency,
);
setState(() {
_convertedAmount = converted.toStringAsFixed(2);
});
} catch (e) {
setState(() {
_error = e.toString();
});
}
} else {
setState(() {
_error = 'Please enter a valid amount.';
});
}
},
child: Text('Convert'),
),
Text(
_error != '' ? _error : 'Converted Amount: $_convertedAmount',
style: TextStyle(color: Colors.red.shade600),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,它允许用户输入金额、选择源货币和目标货币,并显示转换后的金额。我们使用DropdownButtonFormField
来选择货币,并使用ElevatedButton
来触发转换操作。
请注意,forex_currency_conversion
插件可能会依赖外部API来获取最新的汇率数据,因此在实际应用中,请确保处理网络错误和API限制。
希望这个示例能帮助你理解如何使用forex_currency_conversion
插件进行货币转换。