diff --git a/lib/start_game/widgets/how_to_play_dialog.dart b/lib/start_game/widgets/how_to_play_dialog.dart index bc5166e4..c9703834 100644 --- a/lib/start_game/widgets/how_to_play_dialog.dart +++ b/lib/start_game/widgets/how_to_play_dialog.dart @@ -5,22 +5,33 @@ import 'package:pinball/l10n/l10n.dart'; import 'package:pinball_ui/pinball_ui.dart'; class HowToPlayDialog extends StatelessWidget { - const HowToPlayDialog({Key? key}) : super(key: key); + const HowToPlayDialog({ + Key? key, + required this.onDismissCallback, + }) : super(key: key); + + final VoidCallback onDismissCallback; @override Widget build(BuildContext context) { final l10n = context.l10n; const spacing = SizedBox(height: 16); - return PixelatedDecoration( - header: Text(l10n.howToPlay), - body: ListView( - children: const [ - spacing, - _LaunchControls(), - spacing, - _FlipperControls(), - ], + return WillPopScope( + onWillPop: () { + onDismissCallback.call(); + return Future.value(true); + }, + child: PixelatedDecoration( + header: Text(l10n.howToPlay), + body: ListView( + children: const [ + spacing, + _LaunchControls(), + spacing, + _FlipperControls(), + ], + ), ), ); } diff --git a/test/start_game/widgets/how_to_play_dialog_test.dart b/test/start_game/widgets/how_to_play_dialog_test.dart index c31ac1a3..6b240c48 100644 --- a/test/start_game/widgets/how_to_play_dialog_test.dart +++ b/test/start_game/widgets/how_to_play_dialog_test.dart @@ -9,10 +9,14 @@ import '../../helpers/helpers.dart'; void main() { group('HowToPlayDialog', () { - testWidgets('displays content', (tester) async { + testWidgets('displays dialog', (tester) async { final l10n = await AppLocalizations.delegate.load(Locale('en')); - await tester.pumpApp(HowToPlayDialog()); + await tester.pumpApp( + HowToPlayDialog( + onDismissCallback: () {}, + ), + ); expect(find.text(l10n.launchControls), findsOneWidget); });