flame icon indicating copy to clipboard operation
flame copied to clipboard

Multiple GameWidget can share a game; RiverpodAwareGameWidget can't

Open TonyDowney opened this issue 1 year ago • 2 comments

Problem to solve

When using GameWidget, you can make multiple GameWidgets with multiple cameras, sharing the same game:

  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: GameWidget(
              game: this,
              camera: camera1, // First camera view
            ),
          ),
          Expanded(
            child: GameWidget(
              game: this,
              camera: camera2, // Second camera view
            ),
          ),
        ],
      ),
    );
  }

RiverpodAwareGameWidget, which has to be initialized with a GlobalKey, cannot do this. It's a single, unique game per widget.

Proposal

Add the ability to decouple the game from a specific GlobalKey, so it can be shared across an app.

More information

No response

Other

  • [ ] Are you interested in working on a PR for this?

TonyDowney avatar Oct 24 '24 21:10 TonyDowney

We should indeed support this, but you might not need two GameWidget for your use-case, you can have multiple cameras in one game.

spydon avatar Oct 24 '24 21:10 spydon

Related: I tried to get around it with a Hero widget, but because the key is required, it throws errors.

In my opinion, the global key is too tightly coupled, it gets in the way of these edge cases. Not sure uncoupling is viable though.

TonyDowney avatar Oct 25 '24 00:10 TonyDowney