Open
Description
What package does this bug report belong to?
webview_flutter
What target platforms are you seeing this bug on?
macOS
Have you already upgraded your packages?
Yes
Dependency versions
pubspec.lock
[Paste file content here]
Steps to reproduce
While using webview_flutter for desktop development, I employed NSEvent.addLocalMonitorForEvents in Swift to monitor keyboard input. However, when certain shortcuts (e.g., Cmd + D) are pressed, the listener gets triggered infinitely.
Expected results
The listener triggers only once.
Actual results
The listener triggers multiple times or even enters an infinite triggering loop.
Code sample
Code sample
keyboardEventMonitor = NSEvent.addLocalMonitorForEvents(matching: [.keyDown]) {
[weak self] event in
guard let self = self else { return event }
if self.AllowKeyboard == nil {
var modifierFlags: [String] = []
if event.modifierFlags.contains(.shift) {
modifierFlags.append("shift")
}
if event.modifierFlags.contains(.control) {
modifierFlags.append("control")
}
if event.modifierFlags.contains(.option) {
modifierFlags.append("option")
}
if event.modifierFlags.contains(.command) {
modifierFlags.append("command")
}
if event.modifierFlags.contains(.capsLock) {
modifierFlags.append("capsLock")
}
if event.modifierFlags.contains(.function) {
modifierFlags.append("function")
}
if event.modifierFlags.contains(.numericPad) {
modifierFlags.append("numericPad")
}
if event.modifierFlags.contains(.help) {
modifierFlags.append("help")
}
if event.modifierFlags.contains(.deviceIndependentFlagsMask) {
modifierFlags.append("deviceIndependentFlagsMask")
}
emitEvent(
"keyboard",
args: [
"keyCode": event.keyCode,
"modifierFlags": modifierFlags,
"characters": event.characters,
"charactersIgnoringModifiers": event.charactersIgnoringModifiers,
],
callback: { id, args in
if args as? Bool ?? true {
self.AllowKeyboard = event
NSApp.sendEvent(event)
}
}
)
return nil
}
self.AllowKeyboard = nil
if event.modifierFlags.contains(.command) && event.keyCode == 13 {
self.close()
return nil
}
print("Infinite loop here")
return event
}
Screenshots or Videos
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
[Paste your logs here]