Windows10 [Flutter desktop] 中的 RawKeyEvent 错误字符
RawKeyEvent wrong characters in Windows10 [Flutter desktop]
我正在 Flutter Desktop
项目 (Windows 10) 中测试 RawKeyboardListener
。
事件工作正常,但我收到错误的键标签,如下所示:
这是一个 "keyboard layout" 问题吗,比如应用程序是否期待来自具有不同键位的 android 键盘的事件(正如您在我收到的 .gif 和 "Unknown Android key code")?
我该如何解决?
此外,如果我打印 event.isControlPressed
它总是 return 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}');
}
},
),
),
);
}
}
那是 a bug。您无法在应用程序级别修复它。
在修复之前,您唯一能做的就是完全根据键代码而不是逻辑键来编写键处理。
我正在 Flutter Desktop
项目 (Windows 10) 中测试 RawKeyboardListener
。
事件工作正常,但我收到错误的键标签,如下所示:
这是一个 "keyboard layout" 问题吗,比如应用程序是否期待来自具有不同键位的 android 键盘的事件(正如您在我收到的 .gif 和 "Unknown Android key code")? 我该如何解决?
此外,如果我打印 event.isControlPressed
它总是 return 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}');
}
},
),
),
);
}
}
那是 a bug。您无法在应用程序级别修复它。
在修复之前,您唯一能做的就是完全根据键代码而不是逻辑键来编写键处理。