game_scaffold 0.1.4 copy "game_scaffold: ^0.1.4" to clipboard
game_scaffold: ^0.1.4 copied to clipboard

outdated

A new Flutter package project.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:game_scaffold/game_scaffold.dart';
import 'package:hooks_riverpod/all.dart';

void main() {
  runApp(ProviderScope(child: TicTacToeApp()));
}

class TicTacToeApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TicTacToe(),
    );
  }
}

class TicTacToe extends StatelessWidget {
  const TicTacToe();
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      body: Row(children: [
        ProviderScope(
          overrides: [playerIDProvider.overrideAs((watch) => P1)],
          child: Player(),
        ),
        ProviderScope(
          overrides: [playerIDProvider.overrideAs((watch) => P2)],
          child: Player(),
        ),
      ]),
    ));
  }
}

class Player extends GameHookWidget {
  @override
  Widget buildWithGame(BuildContext context, GameProvider gameProvider) {
    final gameStatus = gameProvider.useGameStatus;

    switch (gameStatus) {
      case GameStatus.NotConnected:
      case GameStatus.NotJoined:
        return CreateOrJoinWidget();
      case GameStatus.NotStarted:
        // TODO: Handle this case.
        break;
      case GameStatus.Started:
        // TODO: Handle this case.
        break;
      case GameStatus.Finished:
        // TODO: Handle this case.
        break;
      case GameStatus.BetweenRounds:
        // TODO: Handle this case.
        break;
    }
    throw UnimplementedError('$gameStatus status in Player widget not handled');
  }
}

class CreateOrJoinWidget extends GameHookWidget {
  @override
  Widget buildWithGame(BuildContext context, GameProvider gameProvider) {
    return Column(
      children: [
        Text('Player $playerID'),
        if (playerID == P1)
          FlatButton(
            child: Text('Start Game'),
            onPressed: () {},
          )
      ],
    );
  }
}