Easy Localization提示Firebase初始化失败键不存在问题求助
运行Flutter应用时,日志抛出[🌎 Easy Localization] [WARNING] Localization key [Failed to initialise firebase!] not found警告,该键已存在于assets/translations下的en.json和ar.json中,且屏幕显示对应错误,已确认键的拼写和大小写一致但问题仍存在,可按以下步骤排查:
检查Easy Localization初始化配置
确保main.dart中的初始化代码正确加载翻译文件路径与支持语言,示例代码:void main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); runApp( EasyLocalization( supportedLocales: const [Locale('en'), Locale('ar')], path: 'assets/translations', // 确认路径与实际文件位置完全匹配 fallbackLocale: const Locale('en'), child: const MyApp(), ), ); }重点核对
path参数,避免路径层级多写、少写或拼写错误。检查pubspec.yaml资源配置
确认已正确声明翻译文件资源,且执行过flutter pub get:flutter: assets: - assets/translations/ # 用通配符匹配所有翻译文件 # 或逐个声明: # - assets/translations/en.json # - assets/translations/ar.json检查JSON文件的键结构与语法
确认目标键是顶级键,若为嵌套结构,调用时需带上完整层级(比如tr('errors.Failed to initialise firebase!'));同时用JSON校验工具检查文件是否存在语法错误(如多余逗号、引号不闭合)。示例正确的顶级键JSON:{ "Failed to initialise firebase!": "Failed to initialise firebase!" }清理缓存并重启应用
执行以下命令清理Flutter缓存,避免旧资源残留导致加载异常:flutter clean flutter pub get flutter run检查调用
tr方法的上下文
确保在EasyLocalization的子组件中调用tr方法,或通过EasyLocalization.of(context)获取实例后调用,示例:Text(tr('Failed to initialise firebase!')) // 或 Text(EasyLocalization.of(context)!.tr('Failed to initialise firebase!'))验证设备语言设置
确认当前设备/模拟器语言为en或ar,可临时强制设置测试语言排查:EasyLocalization.of(context)?.setLocale(const Locale('en'));
内容的提问来源于stack exchange,提问作者Thomas c freeman

