From 829dadd3d5f6ec1d07fa2ced7d0e8b8bcf823b76 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Fri, 6 May 2022 17:05:42 -0500 Subject: [PATCH] refactor: provide GameBloc in App (#370) --- lib/app/view/app.dart | 1 + lib/game/view/pinball_game_page.dart | 68 +++++++++------------- test/game/view/pinball_game_page_test.dart | 2 + 3 files changed, 30 insertions(+), 41 deletions(-) diff --git a/lib/app/view/app.dart b/lib/app/view/app.dart index a44d2e33..ae3094e1 100644 --- a/lib/app/view/app.dart +++ b/lib/app/view/app.dart @@ -39,6 +39,7 @@ class App extends StatelessWidget { providers: [ BlocProvider(create: (_) => CharacterThemeCubit()), BlocProvider(create: (_) => StartGameBloc()), + BlocProvider(create: (_) => GameBloc()), ], child: MaterialApp( title: 'I/O Pinball', diff --git a/lib/game/view/pinball_game_page.dart b/lib/game/view/pinball_game_page.dart index 2786b867..1005c728 100644 --- a/lib/game/view/pinball_game_page.dart +++ b/lib/game/view/pinball_game_page.dart @@ -23,15 +23,9 @@ class PinballGamePage extends StatelessWidget { final bool isDebugMode; - static Route route({ - bool isDebugMode = kDebugMode, - }) { + static Route route({bool isDebugMode = kDebugMode}) { return MaterialPageRoute( - builder: (context) { - return PinballGamePage( - isDebugMode: isDebugMode, - ); - }, + builder: (_) => PinballGamePage(isDebugMode: isDebugMode), ); } @@ -41,41 +35,33 @@ class PinballGamePage extends StatelessWidget { context.read().state.characterTheme; final player = context.read(); final leaderboardRepository = context.read(); + final gameBloc = context.read(); + final game = isDebugMode + ? DebugPinballGame( + characterTheme: characterTheme, + player: player, + leaderboardRepository: leaderboardRepository, + l10n: context.l10n, + gameBloc: gameBloc, + ) + : PinballGame( + characterTheme: characterTheme, + player: player, + leaderboardRepository: leaderboardRepository, + l10n: context.l10n, + gameBloc: gameBloc, + ); + + final loadables = [ + ...game.preLoadAssets(), + ...player.load(), + ...BonusAnimation.loadAssets(), + ...SelectedCharacter.loadAssets(), + ]; return BlocProvider( - create: (_) => GameBloc(), - child: Builder( - builder: (context) { - final gameBloc = context.read(); - final game = isDebugMode - ? DebugPinballGame( - characterTheme: characterTheme, - player: player, - leaderboardRepository: leaderboardRepository, - l10n: context.l10n, - gameBloc: gameBloc, - ) - : PinballGame( - characterTheme: characterTheme, - player: player, - leaderboardRepository: leaderboardRepository, - l10n: context.l10n, - gameBloc: gameBloc, - ); - - final loadables = [ - ...game.preLoadAssets(), - ...player.load(), - ...BonusAnimation.loadAssets(), - ...SelectedCharacter.loadAssets(), - ]; - - return BlocProvider( - create: (_) => AssetsManagerCubit(loadables)..load(), - child: PinballGameView(game: game), - ); - }, - ), + create: (_) => AssetsManagerCubit(loadables)..load(), + child: PinballGameView(game: game), ); } } diff --git a/test/game/view/pinball_game_page_test.dart b/test/game/view/pinball_game_page_test.dart index c4515ca8..a0ed4c7e 100644 --- a/test/game/view/pinball_game_page_test.dart +++ b/test/game/view/pinball_game_page_test.dart @@ -84,6 +84,7 @@ void main() { await tester.pumpApp( PinballGamePage(), characterThemeCubit: characterThemeCubit, + gameBloc: gameBloc, ); expect(find.byType(PinballGameView), findsOneWidget); @@ -172,6 +173,7 @@ void main() { ), ), characterThemeCubit: characterThemeCubit, + gameBloc: gameBloc, ); await tester.tap(find.text('Tap me'));