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

Flutter应用切换库尔德语重启后导航报错:Invalid locale 'en'

问题:Flutter多语言切换后重启应用报错Invalid locale "en"

我开发的Flutter应用支持英语、阿拉伯语、库尔德语三种语言,切换任意语言时均无异常,但切换至库尔德语并重启应用后,导航至特定页面会触发以下错误:

Invalid argument(s): Invalid locale "en"

我不清楚重启操作对Locale的影响,但该问题导致应用完全无法运行。

我的代理列表代码:

final delegatesList = [
      GlobalMaterialLocalizations.delegate,
      GlobalCupertinoLocalizations.delegate,
      GlobalWidgetsLocalizations.delegate,
      KuMaterialLocalizations.delegate,
      KuWidgetLocalizations.delegate,
      MaterialLocalizationKuDelegate(),
      ...context.localizationDelegates,
    ];

我的支持区域设置代码:

startLocale: const Locale("en"),
      supportedLocales: const [
        Locale("en"),
        Locale("ku"),
        Locale("ar"),
      ],

可能的原因及解决办法

  • Locale持久化与初始化顺序问题
    重启后库尔德语Locale可能未被正确加载,导致组件回退到"en"时出错。检查Locale持久化逻辑(比如用SharedPreferences保存选中语言),确保应用启动时优先读取保存的Locale,而非直接使用startLocale。

  • 库尔德语本地化代理冲突
    你同时添加了KuMaterialLocalizations.delegate、KuWidgetLocalizations.delegate和MaterialLocalizationKuDelegate(),可能存在代理冗余或冲突。尝试只保留一套库尔德语本地化代理,比如移除重复的MaterialLocalizationKuDelegate(),确保每种本地化类型(Material、Widget)仅对应一个库尔德语代理。

  • 特定页面硬编码Locale引用
    检查报错页面是否存在硬编码的Locale("en")引用,或是初始化组件时强制使用英语Locale。重启后当前Locale为库尔德语,这类硬编码会导致不兼容。

  • 库尔德语本地化资源缺失
    确认库尔德语的本地化资源文件是否完整,尤其是特定页面用到的字符串、Material组件配置。若组件在库尔德语下找不到对应资源,回退逻辑出错就会触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:24:54