FocusNode 'node.ancestors.contains (this)' ошибка во флаттере - PullRequest
0 голосов
/ 30 апреля 2020
        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)'
...