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

Commit abf19c4

Browse files
committed
[web] Migrate Flutter Web DOM usage to JS static interop - 29.
1 parent 8728590 commit abf19c4

File tree

3 files changed

+151
-88
lines changed

3 files changed

+151
-88
lines changed

lib/web_ui/lib/src/engine/dom.dart

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ extension DomWindowExtension on DomWindow {
4040
DomURL get URL => createURL();
4141
external bool dispatchEvent(DomEvent event);
4242
external DomMediaQueryList matchMedia(String? query);
43+
external DomCSSStyleDeclaration getComputedStyle(DomElement elt);
4344
}
4445

4546
@JS()
@@ -186,6 +187,7 @@ extension DomNodeExtension on DomNode {
186187
set text(String? value) =>
187188
js_util.setProperty<String?>(this, 'textContent', value);
188189
external DomNode cloneNode(bool? deep);
190+
external bool contains(DomNode? other);
189191
}
190192

191193
@JS()
@@ -904,6 +906,63 @@ DomPath2D createDomPath2D([Object? path]) =>
904906
domCallConstructorString('Path2D', <Object>[if (path != null) path])!
905907
as DomPath2D;
906908

909+
@JS()
910+
@staticInterop
911+
class DomMouseEvent extends DomUIEvent {}
912+
913+
extension DomMouseEventExtension on DomMouseEvent {
914+
external num get clientX;
915+
external num get clientY;
916+
external int get button;
917+
external int? get buttons;
918+
external bool getModifierState(String keyArg);
919+
}
920+
921+
@JS()
922+
@staticInterop
923+
class DomPointerEvent extends DomMouseEvent {}
924+
925+
extension DomPointerEventExtension on DomPointerEvent {
926+
external int? get pointerId;
927+
external String? get pointerType;
928+
external num? get pressure;
929+
external int? get tiltX;
930+
external int? get tiltY;
931+
List<DomPointerEvent> getCoalescedEvents() =>
932+
js_util.callMethod<List<Object?>>(
933+
this, 'getCoalescedEvents', <Object>[]).cast<DomPointerEvent>();
934+
}
935+
936+
@JS()
937+
@staticInterop
938+
class DomWheelEvent extends DomMouseEvent {}
939+
940+
extension DomWheelEventExtension on DomWheelEvent {
941+
external num get deltaX;
942+
external num get deltaY;
943+
external int get deltaMode;
944+
}
945+
946+
@JS()
947+
@staticInterop
948+
class DomTouchEvent extends DomUIEvent {}
949+
950+
extension DomTouchEventExtension on DomTouchEvent {
951+
List<DomTouch>? get changedTouches => js_util
952+
.getProperty<List<Object?>?>(this, 'changedTouches')
953+
?.cast<DomTouch>();
954+
}
955+
956+
@JS()
957+
@staticInterop
958+
class DomTouch {}
959+
960+
extension DomTouchExtension on DomTouch {
961+
external int? get identifier;
962+
external num? get clientX;
963+
external num? get clientY;
964+
}
965+
907966
Object? domGetConstructor(String constructorName) =>
908967
js_util.getProperty(domWindow, constructorName);
909968

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ class FlutterViewEmbedder {
336336
_sceneHostElement!.style.opacity = '0.3';
337337
}
338338

339-
PointerBinding.initInstance(glassPaneElement as html.Element);
339+
PointerBinding.initInstance(glassPaneElement);
340340
KeyboardBinding.initInstance(glassPaneElement);
341341

342342
if (html.window.visualViewport == null && isWebKit) {

0 commit comments

Comments
 (0)