Future<Either<Failure, User>> call(SignUpParams params) async {
Either<Failure, User> failureOrUser;
// Creates a User
failureOrUser = await repository.signUpUser(
params.email, params.password, params.type);
// Creates a [Learner / Instructor] if User returned
await failureOrUser.fold(
(failure) => left(failure),
(user) async {
final remoteServerFailureOrSuccess =
await createLearnerOrInstructor(CreateLOIParam(user: user));
// check if [Learner / Instructor] creation has failed
remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
}
);
return failureOrUser;
}
Я не могу понять, почему мне нужно поместить await перед failureOrUser.fold();
методом.
Если я этого не сделаю, то метод (user) async {}
не await
final remoteServerFailureOrSuccess = await createLearnerOrInstructor(CreateLOIParam(user: user));
и return failureOrUser;
вызывается до вызова
remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
.
Я получаю 'ожидание применяется до' Object ', который не является Future', подсказка об ошибке, но код ожидает только, пока весь метод не будет завершен, прежде чем возвращаться, что делается таким образом.
Я пытался поместить
await remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
но это все еще не работает.
Так что мне кажется, что
final remoteServerFailureOrSuccess = await createLearnerOrInstructor(CreateLOIParam(user: user));
на самом деле не ждет.