Вызов функции, ожидающей родительский тип класса с аргументом подтипа - PullRequest
0 голосов
/ 10 января 2019

Я начал переносить свой код из 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, я получаю следующую ошибку, нажимаю ли я кнопку или нажимаю ввод:

_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, ожидая один из этих 2 классов?

...