0

私はフラッターとフレームにはまだかなり慣れていませんが、BaseGame を拡張するクラス内で BuilerContext コンテキストを渡す必要があるゲームに取り組んでいます。現在、ウィジェットであるコンポーネントを画面に追加するメソッドを使用しています。 「addWidgetOverlay」と呼ばれます。このエラーは通常、ウィジェット内で BuilderContext コンテキストが呼び出されない場合に発生することを知っていますが、それがどこでクラスが BaseGame を拡張し、ステートフルまたはステートレス ウィジェットではないのか完全にはわかりません。前もって感謝します!

import 'package:flame/components/parallax_component.dart';
import 'package:flame/components/text_component.dart';
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'gamesfdafdsafdsa.dart';


class NewMenu extends BaseGame with HasWidgetsOverlay {

  final SharedPreferences storage;
  TextComponent _text;
  ParallaxComponent _parallaxComponent;
  // BuildContext context;
  NewMenu(this.storage, BuildContext context) {



    // TEMP BACKGROUND
    _parallaxComponent = ParallaxComponent([
      ParallaxImage('Layer_0010_1.png'),
    ], baseSpeed: Offset(100, 0), layerDelta: Offset(20, 0));


// ADDS THE PLAY BUTTON
    addWidgetOverlay('Play Button',
    Center(
      child: TextButton(
          onPressed: () {
            Navigator.of(context).pushReplacement(
              MaterialPageRoute(
                builder: (context) => GamePlay(),
              ),
            );
          },       child: Text('Play')),
    ),
    );

    // PARALLAX COMPONENT
    add(_parallaxComponent);

    // HIGHSCORE TEXT
    _text = TextComponent('${storage.getInt('highscore') ?? 0}');
    add(_text);
  }
}
4

1 に答える 1

0

この問題を解決するには、ステートフル ウィジェットを拡張する別のクラスを作成し、Future ビルダー ウィジェットを使用してメイン メニュー全体を作り直して、保存された値を共有設定に表示できるようにしました。BaseGame を拡張するクラスを使用して画面間を移動する方法については、まだ 100% 確信が持てないので、ステートフル ウィジェットを使用することをお勧めします。

于 2021-06-14T03:50:40.757 に答える