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

Commit d7b0162

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

File tree

4 files changed

+159
-95
lines changed

4 files changed

+159
-95
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
external DomURL get URL;
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()
@@ -905,6 +907,63 @@ DomPath2D createDomPath2D([Object? path]) =>
905907
domCallConstructorString('Path2D', <Object>[if (path != null) path])!
906908
as DomPath2D;
907909

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

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)