refactor: provide GameBloc in App (#370)

pull/358/head
Felix Angelov 2 years ago committed by alestiago
parent d634adec49
commit 829dadd3d5

@ -39,6 +39,7 @@ class App extends StatelessWidget {
providers: [
BlocProvider(create: (_) => CharacterThemeCubit()),
BlocProvider(create: (_) => StartGameBloc()),
BlocProvider(create: (_) => GameBloc()),
],
child: MaterialApp(
title: 'I/O Pinball',

@ -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<void>(
builder: (context) {
return PinballGamePage(
isDebugMode: isDebugMode,
);
},
builder: (_) => PinballGamePage(isDebugMode: isDebugMode),
);
}
@ -41,41 +35,33 @@ class PinballGamePage extends StatelessWidget {
context.read<CharacterThemeCubit>().state.characterTheme;
final player = context.read<PinballPlayer>();
final leaderboardRepository = context.read<LeaderboardRepository>();
final gameBloc = context.read<GameBloc>();
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<GameBloc>();
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),
);
}
}

@ -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'));

Loading…
Cancel
Save