Попробуйте следующее:
Future<AuthResult> login(String email, String password) async {
try {
Future<AuthResult> result = await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);
return result;
} catch (e) {
print(e);
}
}
Затем вы можете вызвать метод следующим образом:
_submit() {
// If fail to login then return the error message
login(_email, _password).then((result) => {
print(result);
});
}
Метод signInWithEmailAndPassword
возвращает Future<AuthResult>
, поэтому присвойте его этому типу, ключевое слово await
будет ждать, пока метод завершит выполнение, а затем вернет значение типа Future<AuthResult>
.
Будущее представляет результат асинхронной операции и может иметь два состояния: не завершено или завершено.
Когда вы вызываете метод login()
, вы можете добавить метод then()
, который регистрирует обратные вызовы, которые будут вызваны после завершения этого будущего.
Когда это будущее завершается со значением, обратный вызов onValue будет вызываться с этим значением.
https://api.dartlang.org/stable/2.7.0/dart-async/Future/then.html