如何导航到 Flutter Flame Engine 游戏小部件之外的小部件

How to navigate to widgets outside of a Flutter Flame Engine game widget

是否可以从 Flame Engine 游戏小部件导航到其他 Flutter 小部件?

下面的应用会立即加载游戏小部件。如何实现在游戏小部件之外导航到另一个 Flutter 小部件?

颤振版本:2.2.3
飞镖版本:2.13.4
火焰引擎版本:flame-1.0.0-rc8

main.dart

import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:my_game.dart';

void main() {
  runApp(
    GameWidget(
      game: MyGame(),
    ),
  );
}

my_game.dart

import 'package:flame/extensions.dart';
import 'package:flame/game.dart';
import 'package:flame/gestures.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

class MyGame extends BaseGame with TapDetector {
    @override
    void update(double dt) { /* TODO */ }

    @override
    void render(Canvas canvas) { /* TODO */ }

    @override
    void onTapUp(TapUpDetails details) {
        // How to navigate outside of the game widget?
    }
}

你可以做两件事:

  • 要么将 GameWidget 放入 Stack 并通过 Navigator 从 Flutter 处理导航,并在认为必要时删除 GameWidget 并将其添加到小部件树。 Flutter Navigation docs
  • 使用 Flame 中的 Overlays API 来处理 Flame 中的状态。 Flame docs

要使用叠加层,您可以在创建 GameWidget 时添加要访问的叠加层,然后调用 game.overlays.add 来呈现特定的小部件,并调用 game.overlays.remove 来停止渲染它。

我确实建议您从 rc8 升级到 rc13,因为文档是针对那个版本的,而且总体上更稳定。