首先添加js
依賴於你的pubspec.yaml:
dependencies:
js: any
通過使用JS-互操作您可以編寫幾乎相同的代碼作爲的JavaScript。
import 'dart:html';
import 'package:js/js.dart' as js;
void main() {
js.scoped(() {
js.context.$(new js.Callback.once(($) {
$('p').hide('slow', new js.Callback.once(() {
js.context.alert("The paragraph is now hidden");
}));
}));
});
}
的主要區別是:
- 你必須使用
js.Callback.once
或js.Callback.many
設置你的回調函數。如果您的回叫只有一次致電,請使用js.Callback.once
。
- 您的密碼必須用
js.scoped
包裝。基本上,managing proxy lifetimes在這裏是爲了防止內存泄漏。
這就是說,你可以簡化上面的代碼:
import 'dart:html';
import 'package:js/js.dart' as js;
void main() {
js.scoped(() {
js.context.$('p').hide('slow', new js.Callback.once(() {
window.alert("The paragraph is now hidden");
}));
});
}
的變化是:不需要
js.context.$(new js.Callback.once(($) {
因爲main
相當於jQuery的$(function)
。
js.context.alert
已經通過window.alert
代替:這是更有效的直接使用DART功能,而不是與JS的通信。
個人而言,我並不激動地看到人們試圖在Dart中使用jQuery(或者甚至在JS中)。我寧願希望看到對操作DOM(在Dart中已經相當不錯)等很好的基礎支持,然後再將其與動畫等好的庫結合使用。您創建的問題有助於這方面的工作。 –
我同意凱,但這是一個良好的橋樑服務,在這些早期。 –
我同意@KaiSellgren請明星的錯誤,並打開更多:) –