You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何获取全量可用货币列表(支持多语言名称)

Flutter 获取多语言全量货币列表方案

方法一:使用官方 intl 包(推荐)

intl 是Flutter官方的国际化工具包,可直接获取系统支持的货币信息并支持多语言本地化。

步骤1:添加依赖

在 pubspec.yaml 中引入 intl 包:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.18.1

步骤2:实现获取货币列表的代码

import 'package:intl/intl.dart';
import 'package:intl/number_symbols_data.dart';
import 'package:intl/number_symbols.dart';

// 获取指定语言的全量货币列表(含代码、名称、符号)
Future<List<Map<String, String>>> fetchCurrencies(String localeCode) async {
  // 初始化指定语言的本地化数据
  await initializeDateFormatting(localeCode);
  
  final locale = Locale(localeCode);
  // 获取所有可用货币代码
  final allCurrencyCodes = NumberFormat.getCurrencyCodes();
  
  final currencyList = <Map<String, String>>[];
  
  for (final code in allCurrencyCodes) {
    // 获取货币符号
    final symbol = _getCurrencySymbol(code, locale);
    // 获取指定语言下的货币名称
    final name = await _getLocalizedCurrencyName(code, locale);
    
    currencyList.add({
      'code': code,
      'name': name,
      'symbol': symbol,
    });
  }
  
  return currencyList;
}

// 获取指定语言的货币符号
String _getCurrencySymbol(String currencyCode, Locale locale) {
  final numberSymbols = numberSymbols[locale.toString()] ?? numberSymbols['en_US'];
  return numberSymbols?.currencySymbolMap?[currencyCode] ?? currencyCode;
}

// 获取指定语言的货币名称
Future<String> _getLocalizedCurrencyName(String currencyCode, Locale locale) async {
  final formatter = CurrencyNameFormatter(locale);
  return formatter.format(currencyCode);
}

调用示例

void main() async {
  // 获取中文简体环境下的货币列表
  final zhCurrencies = await fetchCurrencies('zh_CN');
  print(zhCurrencies.first); // 输出: {code: AED, name: 阿联酋迪拉姆, symbol: د.إ}
  
  // 获取英文美国环境下的货币列表
  final enCurrencies = await fetchCurrencies('en_US');
  print(enCurrencies.first); // 输出: {code: AED, name: UAE Dirham, symbol: د.إ}
}

注意事项

  • 首次调用需执行 initializeDateFormatting 加载本地化数据,避免名称或符号获取失败
  • 部分小众货币在特定语言环境下无本地化名称时,会返回货币代码本身
  • 货币符号会随语言环境变化,部分地区可能显示本地化符号

方法二:使用第三方 currency_picker 包

如果需要更全的货币数据(如小数位数、国家关联信息),可使用封装好的第三方包:

步骤1:添加依赖

dependencies:
  flutter:
    sdk: flutter
  currency_picker: ^2.0.16

步骤2:获取货币列表

import 'package:currency_picker/currency_picker.dart';

void getFullCurrencyList() {
  // 获取全量货币数据
  final allCurrencies = CurrencyService().getAll();
  
  for (final currency in allCurrencies) {
    print('代码: ${currency.code}, 名称: ${currency.name}, 符号: ${currency.symbol}');
    // 获取指定语言的货币名称
    final zhName = CurrencyService().getLocalizedName(currency.code, const Locale('zh'));
    print('中文名称: $zhName');
  }
}

优势

  • 无需手动初始化本地化数据,自带多语言支持
  • 包含额外货币属性(如小数位数、国家代码)
  • 货币数据更全面,覆盖更多小众币种

内容的提问来源于stack exchange,提问作者Vergiliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:07:23