Skip to content

Commit 8875040

Browse files
authored
[web] Migrate selectable_region to static interop. (#113292)
1 parent c49a173 commit 8875040

File tree

6 files changed

+373
-179
lines changed

6 files changed

+373
-179
lines changed

packages/flutter/lib/src/foundation/_platform_web.dart

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,52 +4,12 @@
44

55
import 'dart:ui' as ui;
66

7-
import 'package:js/js.dart';
7+
import '../services/dom.dart';
88

99
import 'platform.dart' as platform;
1010

1111
export 'platform.dart' show TargetPlatform;
1212

13-
/// [DomWindow] interop object.
14-
@JS()
15-
@staticInterop
16-
class DomWindow {}
17-
18-
/// [DomWindow] required extension.
19-
extension DomWindowExtension on DomWindow {
20-
/// Returns a [DomMediaQueryList] of the media that matches [query].
21-
external DomMediaQueryList matchMedia(String? query);
22-
23-
/// Returns the [DomNavigator] associated with this window.
24-
external DomNavigator get navigator;
25-
}
26-
27-
/// The underyling window.
28-
@JS('window')
29-
external DomWindow get domWindow;
30-
31-
/// [DomMediaQueryList] interop object.
32-
@JS()
33-
@staticInterop
34-
class DomMediaQueryList {}
35-
36-
/// [DomMediaQueryList] required extension.
37-
extension DomMediaQueryListExtension on DomMediaQueryList {
38-
/// Whether or not the query matched.
39-
external bool get matches;
40-
}
41-
42-
/// [DomNavigator] interop object.
43-
@JS()
44-
@staticInterop
45-
class DomNavigator {}
46-
47-
/// [DomNavigator] required extension.
48-
extension DomNavigatorExtension on DomNavigator {
49-
/// The underyling platform string.
50-
external String? get platform;
51-
}
52-
5313
/// The web implementation of [platform.defaultTargetPlatform].
5414
platform.TargetPlatform get defaultTargetPlatform {
5515
// To get a better guess at the targetPlatform we need to be able to reference

packages/flutter/lib/src/painting/_network_image_web.dart

Lines changed: 1 addition & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -8,111 +8,11 @@ import 'dart:ui' as ui;
88

99
import 'package:flutter/foundation.dart';
1010
import 'package:js/js.dart';
11-
import 'package:js/js_util.dart' as js_util;
1211

12+
import '../services/dom.dart';
1313
import 'image_provider.dart' as image_provider;
1414
import 'image_stream.dart';
1515

16-
/// [DomXMLHttpRequest] interop class.
17-
@JS()
18-
@staticInterop
19-
class DomXMLHttpRequest {}
20-
21-
/// [DomXMLHttpRequest] extension.
22-
extension DomXMLHttpRequestExtension on DomXMLHttpRequest {
23-
/// Gets the response.
24-
external dynamic get response;
25-
26-
/// Gets the response text.
27-
external String? get responseText;
28-
29-
/// Gets the response type.
30-
external String get responseType;
31-
32-
/// Gets the status.
33-
external int? get status;
34-
35-
/// Set the response type.
36-
external set responseType(String value);
37-
38-
/// Set the request header.
39-
external void setRequestHeader(String header, String value);
40-
41-
/// Open the request.
42-
void open(String method, String url, bool isAsync) => js_util.callMethod(
43-
this, 'open', <Object>[method, url, isAsync]);
44-
45-
/// Send the request.
46-
void send() => js_util.callMethod(this, 'send', <Object>[]);
47-
48-
/// Add event listener.
49-
void addEventListener(String type, DomEventListener? listener,
50-
[bool? useCapture]) {
51-
if (listener != null) {
52-
js_util.callMethod(this, 'addEventListener',
53-
<Object>[type, listener, if (useCapture != null) useCapture]);
54-
}
55-
}
56-
}
57-
58-
/// Factory function for creating [DomXMLHttpRequest].
59-
DomXMLHttpRequest createDomXMLHttpRequest() =>
60-
domCallConstructorString('XMLHttpRequest', <Object?>[])!
61-
as DomXMLHttpRequest;
62-
63-
/// Type for event listener.
64-
typedef DomEventListener = void Function(DomEvent event);
65-
66-
/// [DomEvent] interop object.
67-
@JS()
68-
@staticInterop
69-
class DomEvent {}
70-
71-
/// [DomEvent] reqiured extension.
72-
extension DomEventExtension on DomEvent {
73-
/// Get the event type.
74-
external String get type;
75-
76-
/// Initialize an event.
77-
void initEvent(String type, [bool? bubbles, bool? cancelable]) =>
78-
js_util.callMethod(this, 'initEvent', <Object>[
79-
type,
80-
if (bubbles != null) bubbles,
81-
if (cancelable != null) cancelable
82-
]);
83-
}
84-
85-
/// [DomProgressEvent] interop object.
86-
@JS()
87-
@staticInterop
88-
class DomProgressEvent extends DomEvent {}
89-
90-
/// [DomProgressEvent] reqiured extension.
91-
extension DomProgressEventExtension on DomProgressEvent {
92-
/// Amount of work done.
93-
external int? get loaded;
94-
95-
/// Total amount of work.
96-
external int? get total;
97-
}
98-
99-
/// Gets a constructor from a [String].
100-
Object? domGetConstructor(String constructorName) =>
101-
js_util.getProperty(domWindow, constructorName);
102-
103-
/// Calls a constructor as a [String].
104-
Object? domCallConstructorString(String constructorName, List<Object?> args) {
105-
final Object? constructor = domGetConstructor(constructorName);
106-
if (constructor == null) {
107-
return null;
108-
}
109-
return js_util.callConstructor(constructor, args);
110-
}
111-
112-
/// The underyling window object.
113-
@JS('window')
114-
external Object get domWindow;
115-
11616
/// Creates a type for an overridable factory function for testing purposes.
11717
typedef HttpRequestFactory = DomXMLHttpRequest Function();
11818

0 commit comments

Comments
 (0)