import 'package:go_router/go_router.dart'; import 'package:mchess/pages/chess_game.dart'; import 'package:mchess/pages/join_game.dart'; import 'package:mchess/pages/lobby_selector.dart'; import 'package:mchess/pages/host_game.dart'; import 'package:mchess/pages/prepare_random_game.dart'; class ChessAppRouter { static final ChessAppRouter _instance = ChessAppRouter._internal(); ChessAppRouter._internal(); static ChessAppRouter getInstance() { return _instance; } final router = GoRouter( routes: [ GoRoute( path: '/', name: 'lobbySelector', builder: (context, state) => const LobbySelector(), ), GoRoute( path: '/prepareRandom', name: 'prepareRandom', builder: (context, state) { return const PrepareRandomGameWidget(); }), GoRoute( path: '/host', name: 'host', builder: (context, state) { return const HostGameWidget(); }), GoRoute( path: '/join', name: 'join', builder: (context, state) { return const JoinGameWidget(); }), GoRoute( path: '/game', name: 'game', builder: (context, state) { var args = state.extra as ChessGameArguments; return ChessGame( lobbyID: args.lobbyID, playerID: args.playerID, passphrase: args.passphrase, ); }, ) ], ); }