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

Flutter使用Flame框架开发时Sprite不显示仅黑屏问题求助

问题原因

报错的核心原因是你在FlameGame的构造函数中直接调用add方法添加组件,此时游戏实例还未完成初始化布局,不满足组件挂载的前置条件。报错日志里也明确给出了提示:prepare/add called before the game is ready. Did you try to access it on the Game constructor? Use the "onLoad" or "onMount" method instead.
你手动提前调用组件onLoad的尝试无法解决问题,因为错误根源不是组件自身未加载,而是游戏实例还没准备好接收组件挂载。

修复方案

将添加MyCrate组件的逻辑从MyGame的构造函数,移到MyGame重写的onLoad生命周期方法中即可,修改后的MyGame代码如下:

class MyGame extends FlameGame {
  @override
  Future<void> onLoad() async {
    // 必须先调用父类的onLoad方法
    await super.onLoad();
    // 游戏初始化完成后再添加组件
    add(MyCrate());
  }
}

修改完成后重新运行项目,即可正常在屏幕中心展示crate.png精灵图。

注意事项

只有在游戏未完成初始化的构造阶段调用add会触发该报错,游戏正常运行过程中动态添加组件直接调用add方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:48:00