我已经开始将代码从Dart 1.24迁移到Dart 2.1.0,并且现在函数中的某些类型转换存在一些问题。
我有以下代码,基本上是一个登录页面,在该页面上注册Enter键,然后用鼠标单击按钮以调用函数:
querySelector('#btnLgn').onClick.listen(onClickLogin);
querySelector('#usrName').onKeyUp.listen(onKeyboardPressed);
void onKeyboardPressed(KeyboardEvent e) {
if (e.keyCode == KeyCode.ENTER) {
onClickLogin(e);
}
}
Future onClickLogin(Event e) async {
[...]
}
onClick
侦听器应使用MouseEvent
来调用函数,而onKeyUp
是KeyboardEvent
,两者都是UIEvent
类的子类型,该类是Event
的子类型。
无论何时调用onClickLogin
,无论我单击按钮还是按Enter,都会收到以下错误消息:
_js_helper.TypeErrorImpl.new {message: "Type 'Event$' is not a subtype of ?expected type 'KeyboardEvent$'.", Symbol(_error): Error at Object.dart.throw (http://localhost:32400/packages/$sdk/dev_compiler/amd/dart_sdk.js:48…}
为什么在期望这两个类之一的情况下不能调用onClickLogin
或Event
的子类型的UIEvent
吗?