diff --git a/lib/start_game/widgets/how_to_play_dialog.dart b/lib/start_game/widgets/how_to_play_dialog.dart index aed7a3e3..2f32085f 100644 --- a/lib/start_game/widgets/how_to_play_dialog.dart +++ b/lib/start_game/widgets/how_to_play_dialog.dart @@ -4,25 +4,40 @@ import 'package:flutter/material.dart'; import 'package:pinball/l10n/l10n.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 Dialog( - child: Padding( - padding: const EdgeInsets.all(20), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(l10n.howToPlay), - spacing, - const _LaunchControls(), - spacing, - const _FlipperControls(), - ], + return WillPopScope( + onWillPop: () { + Future.delayed( + kThemeAnimationDuration, + onDismissCallback.call, + ); + + return Future.value(true); + }, + child: Dialog( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(l10n.howToPlay), + spacing, + const _LaunchControls(), + spacing, + const _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 082f102e..ee6277f4 100644 --- a/test/start_game/widgets/how_to_play_dialog_test.dart +++ b/test/start_game/widgets/how_to_play_dialog_test.dart @@ -9,7 +9,11 @@ import '../../helpers/helpers.dart'; void main() { group('HowToPlayDialog', () { testWidgets('displays dialog', (tester) async { - await tester.pumpApp(HowToPlayDialog()); + await tester.pumpApp( + HowToPlayDialog( + onDismissCallback: () {}, + ), + ); expect(find.byType(Dialog), findsOneWidget); });