Flutter for Windows -调度KeyRepeatEvent,但状态显示未按下物理键- Shift Left

yacmzcpb  于 2023-05-19  发布在  Flutter
关注(0)|答案(2)|浏览(185)

我正在为Windows构建Flutter应用程序。我有一个TextField,如果我运行应用程序,并希望通过按住Shift Left或Shift Right插入大写字符,而不是一个字母,我会得到以下错误:

The following assertion was thrown during a platform message callback:   
A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in `HardwareKeyboard`. This was the event: KeyRepeatEvent#d843e(physicalKey: PhysicalKeyboardKey#700e1(usbHidUsage: "0x000700e1", debugName: "Shift Left"), logicalKey: LogicalKeyboardKey#00102(keyId: "0x200000102", keyLabel: "Shift Left", debugName: "Shift Left"), character: null, timeStamp: 124:45:14.849439)   
'package:flutter/src/services/hardware_keyboard.dart':   
Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.   
In either case, please report this assertion by filing a bug on GitHub:   
https://github.com/flutter/flutter/issues/new?template=2_bug.md   

When the exception was thrown, this was the stack:   
#2      HardwareKeyboard._assertEventIsRegular.<anonymous closure> (package:flutter/src/services/hardware_keyboard.dart:432:16)   
#3      HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6)   
#4      HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5)   
#5      KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37)   
#6      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:197:49)   
#7      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:387:35)   
#8      _invoke2 (dart:ui/hooks.dart:186:13)   
#9      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)   
#10     _Channel.push (dart:ui/channel_buffers.dart:132:31)   
#11     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)   
#12     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22)   
#13     _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)   
(elided 2 frames from class _AssertionError)

通过按Caps Lock和than a letter,我没有得到这个错误。看起来Flutter无法处理Shift和字母的组合。
有人知道为什么吗?如何解决这个问题?
我的Flutter设置:

Flutter 3.3.4 • channel stable • https://github.com/flutter/flutter.git   
Framework • revision eb6d86ee27 (13 days ago) • 2022-10-04 22:31:45 -0700   
Engine • revision c08d7d5efc   
Tools • Dart 2.18.2 • DevTools 2.15.0   

Running flutter doctor...   
Doctor summary (to see all details, run flutter doctor -v):   
[√] Flutter (Channel stable, 3.3.4, on Microsoft Windows [Version 10.0.19044.2130], locale de-DE)   
[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)   
[√] Chrome - develop for the web   
[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.6)   
[√] Android Studio (version 2021.2)   
[√] VS Code (version 1.71.2)   
[√] Connected device (3 available)   
[√] HTTP Host Availability   
   
• No issues found!
jjjwad0x

jjjwad0x1#

好吧,我在其他一些论坛和Git Issues上阅读,master通道上的问题已经解决了。所以我从stable通道切换到master通道,我不再得到这个错误。
要做到这一点,你必须运行:
Flutter 通道主控器
Flutter升级

x9ybnkn6

x9ybnkn62#

我通过简单的Powering OffPowering On虚拟设备解决了我的问题。

错误信息**KeyRepeatEvent被调度,但状态显示物理键未按下**与Flutter的键盘事件处理机制有关,通常发生在您按住键盘上的某个键或某些错误时。
如果上述解决方案不起作用,您也可以尝试通过以下方式清除和重建Flutter的构建缓存:

  • flutter clean->清除构建缓存
  • flutter run->运行和重建

相关问题