From 732bcb539f6a8faeea686302e8b95f58c985d28f Mon Sep 17 00:00:00 2001 From: resolritter <17429390+resolritter@users.noreply.github.com> Date: Fri, 14 Jul 2023 03:25:51 -0300 Subject: [PATCH 1/2] implement number selection via keyboard --- sudoku/lib/alerts/numbers.dart | 39 ++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/sudoku/lib/alerts/numbers.dart b/sudoku/lib/alerts/numbers.dart index 28333ca..f0490d6 100644 --- a/sudoku/lib/alerts/numbers.dart +++ b/sudoku/lib/alerts/numbers.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import '../styles.dart'; @@ -25,6 +26,13 @@ class AlertNumbers extends State { static final List numberList2 = [4, 5, 6]; static final List numberList3 = [7, 8, 9]; + void select(int numSelected) { + setState(() { + numberSelected = number = numSelected; + Navigator.pop(context); + }); + } + List createButtons(List numberList) { return [ for (int numbers in numberList) @@ -32,13 +40,7 @@ class AlertNumbers extends State { width: 38, height: 38, child: TextButton( - onPressed: () => { - setState(() { - numberSelected = numbers; - number = numberSelected; - Navigator.pop(context); - }) - }, + onPressed: () => select(numbers), style: ButtonStyle( backgroundColor: MaterialStateProperty.all( Styles.secondaryBackgroundColor), @@ -82,7 +84,26 @@ class AlertNumbers extends State { @override Widget build(BuildContext context) { - return AlertDialog( + return RawKeyboardListener( + focusNode: FocusNode( + onKey: (_, __) => KeyEventResult.handled + ), + autofocus: true, + onKey: (ev) { + if (!(ev is RawKeyUpEvent)) return; + var key = ev.logicalKey; + if (key == LogicalKeyboardKey.escape) Navigator.pop(context); + else if (key == LogicalKeyboardKey.digit1) select(1); + else if (key == LogicalKeyboardKey.digit2) select(2); + else if (key == LogicalKeyboardKey.digit3) select(3); + else if (key == LogicalKeyboardKey.digit4) select(4); + else if (key == LogicalKeyboardKey.digit5) select(5); + else if (key == LogicalKeyboardKey.digit6) select(6); + else if (key == LogicalKeyboardKey.digit7) select(7); + else if (key == LogicalKeyboardKey.digit8) select(8); + else if (key == LogicalKeyboardKey.digit9) select(9); + }, + child: AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), backgroundColor: Styles.secondaryBackgroundColor, title: Center( @@ -95,6 +116,6 @@ class AlertNumbers extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: createRows(), - )); + ))); } } From 7a421d64cc78b5398ff35f731e4fc72629e9f64b Mon Sep 17 00:00:00 2001 From: resolritter <17429390+resolritter@users.noreply.github.com> Date: Fri, 14 Jul 2023 04:33:32 -0300 Subject: [PATCH 2/2] !(is) -> is! --- sudoku/lib/alerts/numbers.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sudoku/lib/alerts/numbers.dart b/sudoku/lib/alerts/numbers.dart index f0490d6..226e5d8 100644 --- a/sudoku/lib/alerts/numbers.dart +++ b/sudoku/lib/alerts/numbers.dart @@ -90,7 +90,7 @@ class AlertNumbers extends State { ), autofocus: true, onKey: (ev) { - if (!(ev is RawKeyUpEvent)) return; + if (ev is! RawKeyUpEvent) return; var key = ev.logicalKey; if (key == LogicalKeyboardKey.escape) Navigator.pop(context); else if (key == LogicalKeyboardKey.digit1) select(1);