Вызов функции, ожидающей родительский тип класса с аргументом подтипа
Я начал переносить свой код из 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 классов?