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

Flutter SDK更新后Web应用白屏,报didCreateEngineInitializerResolve错误

解决Flutter SDK更新后Web应用白屏及_didCreateEngineInitializerResolve错误

这个问题是Flutter Web初始化流程变更导致的——新版本Flutter要求通过flutter.js的loadEntrypoint方法启动应用,而非直接加载main.dart.js触发初始化,否则会出现引擎初始化回调未正确绑定的错误。

解决方案步骤:

  1. 修改index.html的初始化逻辑
    移除原有的<script src="main.dart.js" type="application/javascript"></script>,替换为通过flutter.js启动应用的脚本:
    在<body>标签末尾添加以下代码:

    <script>
      window.addEventListener('load', function() {
        _flutter.loadEntrypoint({
          serviceWorker: {
            serviceWorkerVersion: serviceWorkerVersion,
          }
        });
      });
    </script>
    

    确保flutter.js的引入保留(原代码中<script src="flutter.js" defer></script>无需修改)。

  2. 检查Web入口文件(web_entrypoint.dart)
    确保web/web_entrypoint.dart是标准初始化逻辑,无自定义破坏:

    import 'package:flutter_web_plugins/flutter_web_plugins.dart';
    import 'package:space_shuttle_web_application/main.dart' as app;
    
    void main() {
      setUrlStrategy(PathUrlStrategy());
      app.main();
    }
    
  3. 彻底清理并重新构建
    执行以下命令清除旧构建产物并重新编译:

    flutter clean
    flutter pub get
    flutter build web --release
    

问题原因说明:

更新后的Flutter Web将引擎初始化逻辑封装到了flutter.js中,loadEntrypoint方法会负责创建引擎初始化的Promise回调(即_didCreateEngineInitializerResolve),如果直接加载main.dart.js触发初始化,这个回调未被绑定,就会抛出TypeError: this._didCreateEngineInitializerResolve is not a function错误,同时触发警告Do not call didCreateEngineInitializer by hand. Start with loadEntrypoint instead.。

内容的提问来源于stack exchange,提问作者Danish Ajaib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:20:51