Flutter跨端项目Web端报错求助:弃用警告与资源加载404错误
Flutter Web端两个问题的解决方案
问题1:FlutterLoader.loadEntrypoint 弃用警告
找到项目web目录下的index.html文件,定位到第46行,将弃用的FlutterLoader.loadEntrypoint方法替换为FlutterLoader.load,参数结构保持不变即可。
示例代码修改:
// 旧代码 FlutterLoader.loadEntrypoint({ serviceWorker: { serviceWorkerVersion: serviceWorkerVersion }, onEntrypointLoaded: async (engineInitializer) => { const appRunner = await engineInitializer.initializeEngine(); await appRunner.runApp(); } }); // 新代码 FlutterLoader.load({ serviceWorker: { serviceWorkerVersion: serviceWorkerVersion }, onEntrypointLoaded: async (engineInitializer) => { const appRunner = await engineInitializer.initializeEngine(); await appRunner.runApp(); } });
问题2:Easy Localization 资源加载404错误
这个错误有两个核心原因:路径重复、语言代码格式错误,分别处理:
修复路径重复问题
Flutter Web端的assets根路径为/assets/,如果pubspec.yaml中已配置assets/translations/作为资源目录,Easy Localization的path参数若再写assets/translations,会导致请求路径变成assets/assets/translations,引发404。
解决方法:通过平台判断设置不同的路径:
import 'package:flutter/foundation.dart'; // 在EasyLocalization初始化时 EasyLocalization( supportedLocales: [Locale('en'), Locale('zh')], path: kIsWeb ? 'translations' : 'assets/translations', // Web端去掉前缀assets/ // 其他参数... )
修复语言文件名问题
错误日志中出现en-.json,说明你的Locale对象存在空的地区码(比如Locale('en', '')),导致生成的文件名格式错误。
解决方法:
- 调整supportedLocales的定义,使用无地区码的Locale(如
Locale('en'))或完整的地区码(如Locale('en', 'US')) - 确保
assets/translations目录下存在对应文件名的翻译文件(比如en.json或en_US.json)
内容的提问来源于stack exchange,提问作者G4lan
相关产品推荐
相关产品推荐

