TextEditingController _currentPasswordController = TextEditingController();
TextEditingController _newPasswordController = TextEditingController();
FocusNode _currentPasswordFocus = FocusNode();
FocusNode _newPasswordFocus = FocusNode();
//---------------------------------------------------
PasswordField(
controller: _currentPasswordController,
autoFocus: true,
focusNode: _currentPasswordFocus,
maxLength: 20,
),
PasswordField(
autoFocus: false,
focusNode: _newPasswordFocus,
maxLength: 20,
onSaved: (newValue) {
setState(() {
newPassword = newValue;
});
},
controller: _newPasswordController,
)
//Save Button-->
onPressed: () {
if (formKey.currentState.validate()) {
formKey.currentState.save();
if (_currentPasswordController.text != _newPasswordController.text) {
FocusScope.of(context).autofocus(_currentPasswordFocus);
..................
......................
}
}
Если значения полей текстовой формы не равны при нажатии кнопки в приведенном выше примере кода, я хочу, чтобы курсор фокусировался на поле _currentPasswordController.
Это хорошо работает на реальное устройство в режиме релиза. Но я получаю это сообщение об ошибке на эмуляторе в режиме отладки.
Autofocus was requested for a node that is not a descendant of the scope from which it was requested.
'Package: flutter / src / widgets / focus_manager.dart':
Failed assertion: line 1024 pos 14: 'node.ancestors.contains (this)'