Skip to content

Commit cbc80ed

Browse files
committed
WIP: drop dart:js_util, require Dart 3.3
1 parent abb04bb commit cbc80ed

File tree

7 files changed

+31
-27
lines changed

7 files changed

+31
-27
lines changed

packages/shared_preferences/shared_preferences_web/example/integration_test/shared_preferences_web_test.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import 'package:shared_preferences_platform_interface/shared_preferences_platfor
99
import 'package:shared_preferences_platform_interface/types.dart';
1010
import 'package:shared_preferences_web/shared_preferences_web.dart';
1111
import 'package:shared_preferences_web/src/keys_extension.dart';
12-
13-
import 'package:web/helpers.dart' as html;
12+
import 'package:web/web.dart' as html;
1413

1514
void main() {
1615
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

packages/url_launcher/url_launcher_web/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 2.2.4
2+
3+
* Updates minimum supported SDK version to Flutter 3.19.0/Dart 3.3.0.
4+
* Require `package:web` `^0.5.0`.
5+
* Remove use of Wasm-incompatible `dart:js_util`.
6+
17
## 2.2.3
28

39
* Fixes new lint warnings.

packages/url_launcher/url_launcher_web/example/integration_test/link_widget_test.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dart:js_util';
5+
import 'dart:js_interop';
6+
import 'dart:js_interop_unsafe';
67
import 'dart:ui_web' as ui_web;
78

89
import 'package:flutter/widgets.dart';
910
import 'package:flutter_test/flutter_test.dart';
1011
import 'package:integration_test/integration_test.dart';
1112
import 'package:url_launcher_platform_interface/link.dart';
1213
import 'package:url_launcher_web/src/link.dart';
13-
import 'package:web/helpers.dart' as html;
14+
import 'package:web/web.dart' as html;
1415

1516
void main() {
1617
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
@@ -177,7 +178,7 @@ html.Element _findSingleAnchor() {
177178
html.NodeList anchors = html.document.querySelectorAll('a');
178179
for (int i = 0; i < anchors.length; i++) {
179180
final html.Element anchor = anchors.item(i)! as html.Element;
180-
if (hasProperty(anchor, linkViewIdProperty)) {
181+
if ((anchor as JSObject).hasProperty(linkViewIdProperty.toJS).toDart) {
181182
foundAnchors.add(anchor);
182183
}
183184
}
@@ -189,7 +190,7 @@ html.Element _findSingleAnchor() {
189190
anchors = shadowRoot.querySelectorAll('a');
190191
for (int i = 0; i < anchors.length; i++) {
191192
final html.Element anchor = anchors.item(i)! as html.Element;
192-
if (hasProperty(anchor, linkViewIdProperty)) {
193+
if ((anchor as JSObject).hasProperty(linkViewIdProperty.toJS).toDart) {
193194
foundAnchors.add(anchor);
194195
}
195196
}

packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.dart

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
// found in the LICENSE file.
44

55
import 'dart:js_interop';
6-
import 'dart:js_util';
76

87
import 'package:flutter_test/flutter_test.dart';
98
import 'package:integration_test/integration_test.dart';
109
import 'package:mockito/mockito.dart' show Mock, any, verify, when;
1110
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
1211
import 'package:url_launcher_web/url_launcher_web.dart';
13-
import 'package:web/helpers.dart' as html;
12+
import 'package:web/web.dart' as html;
1413

1514
abstract class MyWindow {
1615
html.Window? open(Object? a, Object? b, Object? c);
@@ -33,17 +32,17 @@ void main() {
3332
group('UrlLauncherPlugin', () {
3433
late MockWindow mockWindow;
3534
late MockNavigator mockNavigator;
35+
late html.Window jsMockWindow;
3636

3737
late UrlLauncherPlugin plugin;
3838

3939
setUp(() {
4040
mockWindow = MockWindow();
4141
mockNavigator = MockNavigator();
4242

43-
final html.Window jsMockWindow =
44-
createDartExport(mockWindow) as html.Window;
43+
jsMockWindow = createJSInteropWrapper(mockWindow) as html.Window;
4544
final html.Navigator jsMockNavigator =
46-
createDartExport(mockNavigator) as html.Navigator;
45+
createJSInteropWrapper(mockNavigator) as html.Navigator;
4746

4847
when(mockWindow.navigator).thenReturn(jsMockNavigator);
4948

@@ -53,7 +52,7 @@ void main() {
5352
when(mockNavigator.userAgent).thenReturn(
5453
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
5554

56-
plugin = UrlLauncherPlugin(debugWindow: mockWindow as html.Window);
55+
plugin = UrlLauncherPlugin(debugWindow: jsMockWindow);
5756
});
5857

5958
group('canLaunch', () {
@@ -185,7 +184,7 @@ void main() {
185184
when(mockNavigator.userAgent).thenReturn(
186185
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5.1 Safari/605.1.15');
187186
// Recreate the plugin, so it grabs the overrides from this group
188-
plugin = UrlLauncherPlugin(debugWindow: mockWindow as html.Window);
187+
plugin = UrlLauncherPlugin(debugWindow: jsMockWindow);
189188
});
190189

191190
testWidgets('http urls should be launched in a new window',

packages/url_launcher/url_launcher_web/example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ dev_dependencies:
1818
url_launcher_platform_interface: ^2.2.0
1919
url_launcher_web:
2020
path: ../
21-
web: '>=0.3.0 <0.5.0'
21+
web: ^0.5.0

packages/url_launcher/url_launcher_web/lib/src/link.dart

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
// found in the LICENSE file.
44

55
import 'dart:async';
6-
import 'dart:js_util';
6+
import 'dart:js_interop';
7+
import 'dart:js_interop_unsafe';
78
import 'dart:ui_web' as ui_web;
89

910
import 'package:flutter/foundation.dart';
@@ -12,7 +13,7 @@ import 'package:flutter/material.dart';
1213
import 'package:flutter/rendering.dart';
1314
import 'package:flutter/services.dart';
1415
import 'package:url_launcher_platform_interface/link.dart';
15-
import 'package:web/helpers.dart' as html;
16+
import 'package:web/web.dart' as html;
1617

1718
/// The unique identifier for the view type to be used for link platform views.
1819
const String linkViewType = '__url_launcher::link';
@@ -172,7 +173,7 @@ class LinkViewController extends PlatformViewController {
172173

173174
Future<void> _initialize() async {
174175
_element = html.document.createElement('a') as html.HTMLElement;
175-
setProperty(_element, linkViewIdProperty, viewId);
176+
(_element as JSObject)[linkViewIdProperty] = viewId.toJS;
176177
_element.style
177178
..opacity = '0'
178179
..display = 'block'
@@ -283,11 +284,9 @@ class LinkViewController extends PlatformViewController {
283284
int? getViewIdFromTarget(html.Event event) {
284285
final html.Element? linkElement = getLinkElementFromTarget(event);
285286
if (linkElement != null) {
286-
// TODO(stuartmorgan): Remove this ignore (and change to getProperty<int>)
287-
// once the templated version is available on stable. On master (2.8) this
288-
// is already not necessary.
289-
// ignore: return_of_invalid_type
290-
return getProperty(linkElement, linkViewIdProperty);
287+
return (linkElement as JSObject)
288+
.getProperty<JSNumber>(linkViewIdProperty.toJS)
289+
.toDartInt;
291290
}
292291
return null;
293292
}
@@ -316,5 +315,5 @@ html.Element? getLinkElementFromTarget(html.Event event) {
316315
bool isLinkElement(html.Element? element) {
317316
return element != null &&
318317
element.tagName == 'A' &&
319-
hasProperty(element, linkViewIdProperty);
318+
(element as JSObject).hasProperty(linkViewIdProperty.toJS).toDart;
320319
}

packages/url_launcher/url_launcher_web/pubspec.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ name: url_launcher_web
22
description: Web platform implementation of url_launcher
33
repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_web
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
5-
version: 2.2.3
5+
version: 2.2.4
66

77
environment:
8-
sdk: ^3.2.0
9-
flutter: ">=3.16.0"
8+
sdk: ^3.3.0-0
9+
flutter: ">=3.19.0-0"
1010

1111
flutter:
1212
plugin:
@@ -22,7 +22,7 @@ dependencies:
2222
flutter_web_plugins:
2323
sdk: flutter
2424
url_launcher_platform_interface: ^2.2.0
25-
web: '>=0.3.0 <0.5.0'
25+
web: ^0.5.0
2626

2727
dev_dependencies:
2828
flutter_test:

0 commit comments

Comments
 (0)