Skip to content

Commit 4fef900

Browse files
authored
migrating dart:html to package:web (#507)
1 parent 2d872eb commit 4fef900

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

example/pubspec.lock

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ packages:
7878
path: ".."
7979
relative: true
8080
source: path
81-
version: "8.2.3"
81+
version: "8.2.5"
8282
leak_tracker:
8383
dependency: transitive
8484
description:
@@ -204,6 +204,14 @@ packages:
204204
url: "https://pub.dev"
205205
source: hosted
206206
version: "13.0.0"
207+
web:
208+
dependency: transitive
209+
description:
210+
name: web
211+
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
212+
url: "https://pub.dev"
213+
source: hosted
214+
version: "0.5.1"
207215
sdks:
208-
dart: ">=3.2.0-0 <4.0.0"
216+
dart: ">=3.3.0 <4.0.0"
209217
flutter: ">=1.10.0"

lib/fluttertoast_web.dart

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'dart:async';
2-
import 'dart:html' as html;
2+
import 'package:web/web.dart' as web;
33
import 'dart:ui_web' as ui;
44
import 'package:flutter/services.dart';
55
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
@@ -69,27 +69,29 @@ class FluttertoastWebPlugin {
6969
/// [injectCssAndJSLibraries] which add the JS and CSS files into DOM
7070
Future<void> injectCssAndJSLibraries() async {
7171
final List<Future<void>> loading = <Future<void>>[];
72-
final List<html.HtmlElement> tags = <html.HtmlElement>[];
72+
final List<web.HTMLElement> tags = <web.HTMLElement>[];
7373

7474
final cssUrl = ui.assetManager.getAssetUrl(
7575
'packages/fluttertoast/assets/toastify.css',
7676
);
77-
final html.LinkElement css = html.LinkElement()
77+
final web.HTMLLinkElement css = web.HTMLLinkElement()
7878
..id = 'toast-css'
79-
..attributes = {"rel": "stylesheet"}
79+
..setAttribute("rel", "stylesheet")
8080
..href = cssUrl;
8181
tags.add(css);
82-
82+
8383
final jsUrl = ui.assetManager.getAssetUrl(
8484
'packages/fluttertoast/assets/toastify.js',
8585
);
86-
final html.ScriptElement script = html.ScriptElement()
86+
final web.HTMLScriptElement script = web.HTMLScriptElement()
8787
..async = true
8888
// ..defer = true
8989
..src = jsUrl;
9090
loading.add(script.onLoad.first);
9191
tags.add(script);
92-
html.querySelector('head')!.children.addAll(tags);
92+
for (final web.HTMLElement tag in tags) {
93+
web.document.querySelector('head')!.append(tag);
94+
}
9395

9496
await Future.wait(loading);
9597
}
@@ -105,7 +107,7 @@ class FluttertoastWebPlugin {
105107
bool showClose = false,
106108
int? textColor}) {
107109
String m = msg.replaceAll("'", "\\'").replaceAll("\n", "<br />");
108-
html.Element? ele = html.querySelector("#toast-content");
110+
web.Element? ele = web.document.querySelector("#toast-content");
109111
String content = """
110112
var toastElement = Toastify({
111113
text: '$m',
@@ -117,18 +119,19 @@ class FluttertoastWebPlugin {
117119
});
118120
toastElement.showToast();
119121
""";
120-
if (html.querySelector("#toast-content") != null) {
122+
if (web.document.querySelector("#toast-content") != null) {
121123
ele!.remove();
122124
}
123-
final html.ScriptElement scriptText = html.ScriptElement()
125+
final web.HTMLScriptElement scriptText = web.HTMLScriptElement()
124126
..id = "toast-content"
125-
..innerHtml = content;
126-
html.querySelector('head')!.children.add(scriptText);
127+
..innerHTML = content;
128+
web.document.body!.append(scriptText);
127129
if (textColor != null) {
128-
html.Element toast = html.querySelector('.toastify')!;
130+
web.Element toast = web.document.querySelector('.toastify')!;
129131
String tcRadix = textColor.toRadixString(16);
130132
final String tC = "${tcRadix.substring(2)}${tcRadix.substring(0, 2)}";
131-
toast.style.setProperty('color', "#$tC");
133+
final style = toast.getAttribute('style') ?? '';
134+
toast.setAttribute('style', '$style color: #$tC;');
132135
}
133136
}
134137
}

pubspec.lock

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ packages:
5656
url: "https://pub.dev"
5757
source: hosted
5858
version: "2.1.4"
59+
web:
60+
dependency: "direct main"
61+
description:
62+
name: web
63+
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
64+
url: "https://pub.dev"
65+
source: hosted
66+
version: "0.5.1"
5967
sdks:
60-
dart: ">=3.2.0-0 <4.0.0"
68+
dart: ">=3.3.0 <4.0.0"
6169
flutter: ">=1.10.0"

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dependencies:
1313
sdk: flutter
1414
flutter_web_plugins:
1515
sdk: flutter
16+
web: ^0.5.1
1617

1718
flutter:
1819
plugin:

0 commit comments

Comments
 (0)