我目前正在尝试遵循 dart.dev 的 迁移指南来更新依赖于现已弃用的 dart:html 库的包。
一些更新很简单。例如,类似
import "dart:html" as html;
...
final canvas = html.CanvasElement(width: 100, height: 100);
成为
import "package:web/web.dart" as web;
...
final canvas = web.HTMLCanvasElement()..width=100..height=100;
但我很难应付听众。
例如,我有这样的东西,它可以使用 dart:html:
html.document.onFocus.listen((_) {
// handle event...
});
我注意到
web.document
附加了 onfocus
,但我无法为其添加侦听器...
我们如何处理诸如上述的事件?我们在哪里可以找到 web 包的详细文档?
您可以通过在
JSFunction
上调用 .toJS
(来自 dart:js_interop
)getter 将 Dart 函数转换为 Function
。
JSFunction
实例可用于设置web.document.onfocus
的回调。
所以类似:
import 'package:web/web.dart' as web;
import 'dart:js_interop';
void main() {
void printString(web.Event event) {
print(event.target);
}
web.document.onfocus = printString.toJS;
}