Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 7281436

Browse files
committed
[web] PointerBinding per view
1 parent 0a8b615 commit 7281436

File tree

12 files changed

+318
-268
lines changed

12 files changed

+318
-268
lines changed

lib/web_ui/lib/src/engine/embedder.dart

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import '../engine.dart' show buildMode, renderer;
88
import 'browser_detection.dart';
99
import 'configuration.dart';
1010
import 'dom.dart';
11-
import 'keyboard_binding.dart';
1211
import 'platform_dispatcher.dart';
13-
import 'pointer_binding.dart';
1412
import 'text_editing/text_editing.dart';
1513
import 'view_embedder/style_manager.dart';
1614
import 'window.dart';
@@ -67,14 +65,6 @@ class FlutterViewEmbedder {
6765

6866
renderer.reset(this);
6967

70-
// TODO(mdebbar): Move these to `engine/initialization.dart`.
71-
72-
KeyboardBinding.initInstance();
73-
PointerBinding.initInstance(
74-
_flutterViewElement,
75-
KeyboardBinding.instance!.converter,
76-
);
77-
7868
window.onResize.listen(_metricsDidChange);
7969
}
8070

lib/web_ui/lib/src/engine/initialization.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ Future<void> initializeEngineUi() async {
218218
_initializationState = DebugEngineInitializationState.initializingUi;
219219

220220
RawKeyboard.initialize(onMacOs: operatingSystem == OperatingSystem.macOs);
221+
KeyboardBinding.initInstance();
222+
221223
if (!configuration.multiViewEnabled) {
222224
ensureImplicitViewInitialized(hostElement: configuration.hostElement);
223225
ensureFlutterViewEmbedderInitialized();

lib/web_ui/lib/src/engine/keyboard_binding.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ class KeyboardConverter {
258258
bool _disposed = false;
259259
void dispose() {
260260
_disposed = true;
261+
clearPressedKeys();
261262
}
262263

263264
// On macOS, CapsLock behaves differently in that, a keydown event occurs when
@@ -699,4 +700,8 @@ class KeyboardConverter {
699700
bool keyIsPressed(int physical) {
700701
return _pressingRecords.containsKey(physical);
701702
}
703+
704+
void clearPressedKeys() {
705+
_pressingRecords.clear();
706+
}
702707
}

lib/web_ui/lib/src/engine/platform_dispatcher.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
634634
const StandardMessageCodec codec = StandardMessageCodec();
635635
// TODO(yjbanov): Dispatch the announcement to the correct view?
636636
// https://github.com/flutter/flutter/issues/137445
637-
implicitView!.accessibilityAnnouncements.handleMessage(codec, data);
637+
implicitView?.accessibilityAnnouncements.handleMessage(codec, data);
638638
replyToPlatformMessage(callback, codec.encodeMessage(true));
639639
return;
640640

0 commit comments

Comments
 (0)