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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:20:09