Как вы можете настроить flutter rawkeyboardlistener на чтение {} (фигурные скобки) вместо квадратных скобок?

#flutter

#flutter

Вопрос:

У меня есть решение flutter, которое интерпретирует QR-код с помощью сканирующего устройства. Я использую RawKeyboardListener для чтения отсканированного QR-кода, который затем преобразует его в переменную.

Значение QR является объектом {something: somethingelse} , но при чтении RawKeyboardListener он считывает {} как [], и в результате объект становится недействительным.

           String runtime = event.runtimeType.toString();

          if (event.data.logicalKey != LogicalKeyboardKey.enter) {
            setState(() {
              scannedItem  = runtime == 'RawKeyUpEvent' ? event.data.keyLabel : '';
            });
          } else if (scannedItem != '') {
            setState(() {
                var data = json.decode(scannedItem);
            });
          }
 

Ответ №1:

Я поиграл с решением и в итоге исправил его, хотя я чувствую, что есть лучший способ решить эту проблему

                             if (event.data.isShiftPressed) {
                              switch (event.data.logicalKey.debugName) {
                                case 'Bracket Left':
                                  keyLabel = '{';
                                  break;
                                case 'Bracket Right':
                                  keyLabel = '}';
                                  break;
                                case 'Quote':
                                  keyLabel = '"';
                                  break;
                                case 'Semicolon':
                                  keyLabel = ':';
                                  break;
                                default:
                                  keyLabel = keyLabel.toUpperCase();
                                  break;
                              }
                            }