
目录结构game_home controller.dart game_home_game.dart view.dartviewimportpackage:flame/game.dart;importpackage:flutter/material.dart;importpackage:get/get.dart;importindex.dart;class GameHomePage extends GetViewGameHomeController{const GameHomePage({super.key});// 主视图 Widget _buildView(GameHomeController controller){returnGameWidgetGameHomeCanvasGame(game: controller.game,);}override Widget build(BuildContext context){returnGetBuilderGameHomeController(init: GameHomeController(), id:game_home, builder:(controller){returnScaffold(resizeToAvoidBottomInset: false, body: _buildView(controller),);},);}}controllerimportpackage:get/get.dart;importgame_home_game.dart;class GameHomeController extends GetxController{GameHomeController();// 页面持有稳定的 Flame 游戏实例避免 Flutter rebuild 时重复创建画布。 final GameHomeCanvasGame gameGameHomeCanvasGame();_initData(){update([game_home]);}override voidonReady(){super.onReady();_initData();}override voidonClose(){game.pauseEngine();super.onClose();}}GameHomeCanvasGameimportpackage:flame/game.dart;importpackage:flutter/material.dart;/// 游戏首页的最基础 Flame 画布。 /// /// 当前只负责提供一个可渲染的游戏世界后续玩家、地图、碰撞等组件都从这里添加。 class GameHomeCanvasGame extends FlameGame{override Color backgroundColor()const Color(0xFF101828);}理解GameHomeController 持有 controller.game ↓ controller.game 是 GameHomeCanvasGame 实例 ↓ GameHomePage 里用 GameWidget(game: controller.game)↓ GameWidget 把 Flame 游戏世界嵌入 Flutter 页面一句话记住Controller 创建并保存游戏实例Page 用 GameWidget 展示这个实例GameHomeCanvasGame 才是真正的游戏世界。