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

Flutter+GetX本地化:如何通过索引访问映射字符串条目

GetX本地化动态索引拼接Key报错的解决方法

问题场景

使用GetX实现本地化时,Text组件嵌套ListView,尝试通过索引动态获取name_1、short_desc_1这类多语言Key对应的值,触发了_CastError (Null check operator used on a null value)错误。

多语言映射定义

Map<String, Map<String, String>> get keys => {
    'tr_TR': {
      'name_1': 'Dünya',
      'short_desc_1': 'Dünyadan',
    },
    'en_US': {
      'name_1': 'world',
      'short_desc_1': 'from world'
    },
    'de_DE': {
      'name_1': 'world',
      'short_desc_1': 'from world'
    },
    'fr_FR': {
      'name_1': 'world',
      'short_desc_1': 'from world'
    }
  };

代码对比

  • 固定字符串拼接可正常取值:
TranslateStrings().keys[locale]!['name_' + '2']!.tr
  • 使用索引拼接触发错误:
TranslateStrings().keys[locale]!['name_' + index.toString()]!.tr

错误原因

ListView的索引index默认从0开始,但多语言Key是从name_1开始编号的。直接用index.toString()会生成name_0这类不存在的Key,导致取值返回null,代码中的空值检查运算符!触发了空指针错误。

解决方法

通过字符串插值将索引转为从1开始的编号,匹配多语言Key的命名规则:

TranslateStrings().keys[locale]!['name_' + '${index + 1}']!.tr

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:17