У вас есть асинхронный код, выполняющийся внутри вашего валидатора, поэтому, когда выполнение достигает этой строки:
locator<LocalStorageService>()
.isValidPassword(val.trim())
.then((onValue) {
print('---------------- $onValue');
_value = onValue;
});
Он вызывает isValidPassword
и регистрирует обратный вызов (then(...)
)
И он продолжает следующий код:
if (_value == true) {
print('///////////+++++++++++++++++++');
return null;
} else {
print('///////////-------------------');
return 'Wrong password';
}
немедленно, не дожидаясь завершения Future
, указанного выше,
Так что теперь _value
по-прежнему null
, потому что Future
не У него нет времени на возврат, поэтому теперь будет выполнен блок else
,
Решение : Полагаю, это TextFormFieldValidator
, и поэтому вы не можете await
Future
(иначе вы будете возвращать Future
из проверки, которая запрещена), поэтому вы должны изменить свой код, который делает проверку, чтобы она не зависела от Future
узнать больше о как работает асин c код здесь