我已经开始将我的代码从 Dart 1.24 迁移到 Dart 2.1.0,我现在在函数中的某些类型转换方面遇到了一些问题。
我有以下代码,这基本上是一个登录页面,我在其中注册了回车键,然后鼠标单击按钮调用函数:
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
在期望这两个类中的一个时调用?