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

Flutter中如何通过动态key从AppLocalizations获取本地化字符串

问题原因

默认通过Flutter官方工具生成的AppLocalizations类,仅为arb文件中定义的每个本地化键生成了独立的getter方法,没有重载[]运算符,因此无法直接用下标方式通过变量动态获取本地化值。

替代方案

除自定义全局映射表外,还有以下两种可直接落地的方案:

  • 方案1:通过扩展方法重载[]运算符,复用生成类自带的查找能力(无需手动维护键值映射)
    直接为AppLocalizations添加扩展封装动态取key的逻辑,添加后原有写法无需修改即可正常运行:
    extension DynamicLocalization on AppLocalizations {
      String operator [](String key) {
        // 调用生成类自带的lookupMessage方法实现动态查找
        return lookupMessage(key, null, null, null, null, null) ?? '⚠️ 未找到$key对应的文案';
      }
    }
    
  • 方案2:手动维护key到getter的映射,更可控
    如果需要限制可动态访问的key范围、避免拼写错误,可以用switch手动维护映射关系:
    extension DynamicLocalization on AppLocalizations {
      String operator [](String key) {
        switch (key) {
          case 'home_title':
            return homeTitle;
          case 'confirm_btn':
            return confirmBtn;
          // 按需添加所有需要动态访问的本地化键即可
          default:
            return '未知文案';
        }
      }
    }
    

注意事项

如果使用lookupMessage方案,需要确保传入的key和arb文件中定义的键完全匹配、大小写一致,否则会返回兜底文案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:57:02