diff --git a/lib/game/view/widgets/play_button_overlay.dart b/lib/game/view/widgets/play_button_overlay.dart index 6f039124..2fa963fa 100644 --- a/lib/game/view/widgets/play_button_overlay.dart +++ b/lib/game/view/widgets/play_button_overlay.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:pinball/game/pinball_game.dart'; import 'package:pinball/l10n/l10n.dart'; +import 'package:pinball/theme/theme.dart'; /// {@template play_button_overlay} /// [Widget] that renders the button responsible to starting the game @@ -18,9 +19,28 @@ class PlayButtonOverlay extends StatelessWidget { @override Widget build(BuildContext context) { final l10n = context.l10n; + return Center( child: ElevatedButton( - onPressed: _game.gameFlowController.start, + onPressed: () { + _game.gameFlowController.start(); + showDialog( + context: context, + builder: (_) { + final width = MediaQuery.of(context).size.width * 0.9; + final height = MediaQuery.of(context).size.height * 0.9; + + return Center( + child: SizedBox( + height: height, + width: width, + child: const CharacterSelectionPage(), + ), + ); + }, + barrierDismissible: false, + ); + }, child: Text(l10n.play), ), ); diff --git a/test/game/view/play_button_overlay_test.dart b/test/game/view/widgets/play_button_overlay_test.dart similarity index 70% rename from test/game/view/play_button_overlay_test.dart rename to test/game/view/widgets/play_button_overlay_test.dart index 020998d4..20d3ab6b 100644 --- a/test/game/view/play_button_overlay_test.dart +++ b/test/game/view/widgets/play_button_overlay_test.dart @@ -1,8 +1,9 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:pinball/game/game.dart'; +import 'package:pinball/theme/theme.dart'; -import '../../helpers/helpers.dart'; +import '../../../helpers/helpers.dart'; void main() { group('PlayButtonOverlay', () { @@ -31,5 +32,15 @@ void main() { verify(gameFlowController.start).called(1); }); + + testWidgets('is showing CharacterSelectionPage dialog when taped', + (tester) async { + await tester.pumpApp(PlayButtonOverlay(game: game)); + + await tester.tap(find.text('Play')); + await tester.pump(); + + expect(find.byType(CharacterSelectionPage), findsOneWidget); + }); }); }