Проблема с поведением виджетов Focus во флаттереAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с поведением виджетов Focus во флаттере

Сообщение Anonymous »

Я разрабатываю приложение для Android TV, используя Flutter. В настоящее время я работаю над страницей входа в систему, которая имеет три виджета. Я обернул виджет формы виджетом FocusableActionDetector.
Это карта ярлыков

Код: Выделить всё

shortcuts: {
LogicalKeySet(LogicalKeyboardKey.select): const ActivateIntent(),
LogicalKeySet(LogicalKeyboardKey.arrowUp):  UpbuttonIntent(),
LogicalKeySet(LogicalKeyboardKey.arrowDown):  DownbuttonIntent(),
}
Это действия

Код: Выделить всё

 actions: {
DownbuttonIntent: CallbackAction(
onInvoke: (intent) {
if(usernameFocus!.hasFocus){
FocusScope.of(context).requestFocus(passwordFocus);
setState(() {

});
}else if(passwordFocus!.hasFocus){
FocusScope.of(context).requestFocus(loginButtonFocus);
setState(() {

});
}else if(loginButtonFocus!.hasFocus){
FocusScope.of(context).requestFocus(usernameFocus);
setState(() {

});
}

},),
UpbuttonIntent: CallbackAction(
onInvoke: (intent) {
if(usernameFocus!.hasFocus){
FocusScope.of(context).requestFocus(loginButtonFocus);
setState(() {

});

}else if(passwordFocus!.hasFocus){
FocusScope.of(context).requestFocus(usernameFocus);
setState(() {

});

}else if(loginButtonFocus!.hasFocus){
FocusScope.of(context).requestFocus(passwordFocus);
setState(() {

});
}

},),
ActivateIntent: CallbackAction(
onInvoke: (intent) async{
if(usernameFocus!.hasFocus){
showCustomKeyboard(context, usernameController);
}else if(passwordFocus!.hasFocus){
showCustomKeyboard(context, passwordController);

}else if(loginButtonFocus!.hasFocus){
if(formKey.currentState!.validate()){
UserDataModel user = UserDataModel(username: usernameController.text, password: passwordController.text);
await context.read().login(user);

}
}

}),
}
Проблема в том, что поведение фокуса действует очень непоследовательно. Он перебирает виджеты в правильном порядке 3-4 раза, после чего поведение становится очень непредсказуемым. Я хотел знать, что именно я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-flutter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»