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

Flutter安卓端Material日期选择器本地化异常问题

解决Material日期选择器多语言显示不一致问题

问题原因

你的localeListResolutionCallback中使用supportedLocales.contains(locale)做匹配判断,但设备返回的德语Locale可能是不带国家码的Locale('de'),而应用支持列表里定义的是Locale('de', 'DE'),两者对象不相等导致匹配逻辑未命中德语Locale。尽管日志显示应用运行在德语环境,但日期选择器的底层本地化依赖更精准的Locale匹配,最终 fallback 到了设备的次选语言波兰语。

解决方案

修改localeListResolutionCallback的匹配逻辑,优先匹配语言代码(忽略国家码差异),而非严格匹配完整的Locale对象:

localeListResolutionCallback: ((locales, supportedLocales) {
  // 遍历设备提供的所有语言列表
  for (Locale locale in locales!) {
    // 遍历应用支持语言,匹配语言代码
    for (Locale supportedLocale in supportedLocales) {
      if (supportedLocale.languageCode == locale.languageCode) {
        return supportedLocale;
      }
    }
  }
  // 无匹配时返回默认英语
  return const Locale('en', 'US');
}),

额外优化建议

  • 可以简化应用支持的Locale定义,只保留语言代码,让匹配更宽松:
static const supportedLanguages = [
  Locale('en'),
  Locale('de'),
  Locale('it'),
];
  • 确认安卓端resConfigs和locale-config配置无误(当前配置已符合要求)
  • 修改后重启模拟器和应用,确保配置生效

调整后,设备的德语Locale无论是否携带国家码,都会匹配到应用支持的德语本地化资源,日期选择器即可完全显示德语。

内容的提问来源于stack exchange,提问作者Anna R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:40:22