如何修改代码让应用内购买显示货币符号而非货币代码
解决方案
方法一:手动映射货币代码到符号(适合少量货币场景)
如果你的应用只涉及少数几种货币,可以直接创建映射表完成代码到符号的转换:
String? getPrice() { // 定义货币代码与符号的对应关系 const Map<String, String> currencySymbols = { 'GBP': '£', 'USD': '$', 'EUR': '€', // 按需添加其他需要支持的货币 }; try { String currencyCode = _items[0].currency!; // 优先取对应符号,无匹配则 fallback 到原货币代码 String symbol = currencySymbols[currencyCode] ?? currencyCode; return '$symbol ${_items[0].price!}'; } catch (e) { return '£ 5.00'; } }
方法二:使用intl包(推荐,支持多货币与规范格式化)
如果需要覆盖更多货币,或者希望价格格式更严谨(比如自动处理小数位数),推荐使用Dart官方的intl包:
- 先在
pubspec.yaml中添加依赖:
dependencies: intl: ^0.18.1 # 请使用最新版本
- 修改代码实现自动转换与格式化:
import 'package:intl/intl.dart'; String? getPrice() { try { String currencyCode = _items[0].currency!; double price = double.parse(_items[0].price!); // 创建货币格式化器,自动匹配对应货币符号 final formatter = NumberFormat.currency( name: currencyCode, symbol: null, // 设为null会自动加载对应货币的符号 locale: 'en_GB', // 可根据需求调整区域,或留空适配系统设置 ); return formatter.format(price); } catch (e) { return '£ 5.00'; } }
说明:NumberFormat.currency不仅能自动转换货币代码为符号,还能统一价格的小数位数格式,比手动拼接更严谨可靠。
内容的提问来源于stack exchange,提问作者Abdullah Ergun
相关产品推荐
相关产品推荐

