Skip to content

Commit bec2436

Browse files
authored
[web] Migrate framework to fully use package:web (#128901)
Remove `dom.dart`'s JS interop definitions in favor of `package:web`. Part of flutter/flutter#113402 Part of flutter/flutter#127030
1 parent 5140b0f commit bec2436

File tree

6 files changed

+50
-464
lines changed

6 files changed

+50
-464
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:ui' as ui;
66

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

99
import 'platform.dart' as platform;
1010

@@ -40,7 +40,7 @@ final platform.TargetPlatform? _testPlatform = () {
4040
// 0.20ms. As `defaultTargetPlatform` is routinely called dozens of times per
4141
// frame this value should be cached.
4242
final platform.TargetPlatform _browserPlatform = () {
43-
final String navigatorPlatform = domWindow.navigator.platform?.toLowerCase() ?? '';
43+
final String navigatorPlatform = web.window.navigator.platform.toLowerCase();
4444
if (navigatorPlatform.startsWith('mac')) {
4545
return platform.TargetPlatform.macOS;
4646
}
@@ -60,7 +60,7 @@ final platform.TargetPlatform _browserPlatform = () {
6060
// indicates that a device has a "fine pointer" (mouse) as the primary
6161
// pointing device, then we'll assume desktop linux, and otherwise we'll
6262
// assume Android.
63-
if (domWindow.matchMedia('only screen and (pointer: fine)').matches) {
63+
if (web.window.matchMedia('only screen and (pointer: fine)').matches) {
6464
return platform.TargetPlatform.linux;
6565
}
6666
return platform.TargetPlatform.android;

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

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ import 'dart:js_interop';
77
import 'dart:ui' as ui;
88

99
import 'package:flutter/foundation.dart';
10+
import 'package:web/web.dart' as web;
1011

11-
import '../services/dom.dart';
1212
import 'image_provider.dart' as image_provider;
1313
import 'image_stream.dart';
1414

1515
/// Creates a type for an overridable factory function for testing purposes.
16-
typedef HttpRequestFactory = DomXMLHttpRequest Function();
16+
typedef HttpRequestFactory = web.XMLHttpRequest Function();
1717

1818
/// Default HTTP client.
19-
DomXMLHttpRequest _httpClient() {
20-
return DomXMLHttpRequest();
19+
web.XMLHttpRequest _httpClient() {
20+
return web.XMLHttpRequest();
2121
}
2222

2323
/// Creates an overridable factory function.
@@ -135,9 +135,9 @@ class NetworkImage
135135
// We use a different method when headers are set because the
136136
// `ui.webOnlyInstantiateImageCodecFromUrl` method is not capable of handling headers.
137137
if (isCanvasKit || containsNetworkImageHeaders) {
138-
final Completer<DomXMLHttpRequest> completer =
139-
Completer<DomXMLHttpRequest>();
140-
final DomXMLHttpRequest request = httpRequestFactory();
138+
final Completer<web.XMLHttpRequest> completer =
139+
Completer<web.XMLHttpRequest>();
140+
final web.XMLHttpRequest request = httpRequestFactory();
141141

142142
request.open('GET', key.url, true);
143143
request.responseType = 'arraybuffer';
@@ -147,9 +147,9 @@ class NetworkImage
147147
});
148148
}
149149

150-
request.addEventListener('load', createDomEventListener((DomEvent e) {
151-
final int? status = request.status;
152-
final bool accepted = status! >= 200 && status < 300;
150+
request.addEventListener('load', (web.Event e) {
151+
final int status = request.status;
152+
final bool accepted = status >= 200 && status < 300;
153153
final bool fileUri = status == 0; // file:// URIs have status of 0.
154154
final bool notModified = status == 304;
155155
final bool unknownRedirect = status > 307 && status < 400;
@@ -161,12 +161,11 @@ class NetworkImage
161161
} else {
162162
completer.completeError(e);
163163
throw image_provider.NetworkImageLoadException(
164-
statusCode: request.status ?? 400, uri: resolved);
164+
statusCode: status, uri: resolved);
165165
}
166-
}));
166+
}.toJS);
167167

168-
request.addEventListener('error',
169-
createDomEventListener(completer.completeError));
168+
request.addEventListener('error', completer.completeError.toJS);
170169

171170
request.send();
172171

@@ -176,7 +175,7 @@ class NetworkImage
176175

177176
if (bytes.lengthInBytes == 0) {
178177
throw image_provider.NetworkImageLoadException(
179-
statusCode: request.status!, uri: resolved);
178+
statusCode: request.status, uri: resolved);
180179
}
181180

182181
if (decode != null) {

0 commit comments

Comments
 (0)