Я тестирую RawKeyboardListener
в Flutter Desktop
проекте (Windows 10).
События работают нормально, но я получаю неправильную метку ключей, как вы можете видеть ниже:
Это проблема «раскладки клавиатуры», как если бы приложение ожидало события от клавиатуры android с различными положениями клавиш (как вы можете видеть на .gif я получаю и "Неизвестный Android код ключа")? Как я могу это исправить?
Кроме того, если я печатаю event.isControlPressed
, он всегда возвращает false
, даже если я нажимаю на него.
Это код, который я использую:
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
// See https://github.com/flutter/flutter/wiki/Desktop-shells#target-platform-override
if (!kIsWeb && (Platform.isLinux || Platform.isWindows)) {
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
}
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: RawKeyboardListener(
child: TextField(),
focusNode: FocusNode(),
onKey: (event) async {
if (event.runtimeType == RawKeyDownEvent) {
print(
'id: ${event.logicalKey.keyId}, label: ${event.logicalKey.keyLabel} debugName: ${event.logicalKey.debugName}');
}
},
),
),
);
}
}