调用带有子类型实参的期望父类类型的函数

时间:2019-01-10 14:25:01

标签: dart dart-html dart-2

我已经开始将代码从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来调用函数,而onKeyUpKeyboardEvent,两者都是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…}

为什么在期望这两个类之一的情况下不能调用onClickLoginEvent的子类型的UIEvent吗?

0 个答案:

没有答案