Я начал переносить свой код из 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 классов?