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

如何修改代码让应用内购买显示货币符号而非货币代码

解决方案

方法一:手动映射货币代码到符号(适合少量货币场景)

如果你的应用只涉及少数几种货币,可以直接创建映射表完成代码到符号的转换:

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包:

  1. 先在pubspec.yaml中添加依赖:
dependencies:
  intl: ^0.18.1 # 请使用最新版本
  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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:42:07