#flutter
Вопрос:
У меня есть блок:
if (event is RequestImage) {
yield ResponsesLoading();
try {
File file;
if (event.fromGallery) {
file = await getFromGallery(mediaType: event.mediaType);
} else {
file = await getFromCamera(mediaType: event.mediaType);
}
if (file == null) {
final response = await PraxApiClient().getDraftResponse(promptId: event.promptId);
yield ResponseDraftSuccess(response: response);
}
await apiService.uploadPic(responseId: event.responseId, file: file, accessToken: token);
final response = await PraxApiClient().getDraftResponse(promptId: event.promptId);
yield (ResponseDraftSuccess(response: response));
}
catch (e) {
yield ResponsesFailure(e.toString());
print(e.toString());
print(e.stackTrace.toString());
}
}
В тот момент, когда файл возвращает значение null, я делаю запрос getDraftResponse
на возврат ResponseDraftSuccess
состояния. Но, конечно, моя программа продолжает выполняться, и поскольку файл равен нулю uploadPic
, вызов api завершается неудачно, и моя программа переходит в ResponsesFailure
состояние. Я хочу остановить выполнение события RequestImage
, когда файл возвращает значение null (но после
final response = await PraxApiClient().getDraftResponse(promptId: event.promptId);
yield ResponseDraftSuccess(response: response)
). Возвращена ошибка NoSuchMethodError
: от нуля. Я подумываю об этом после предложения try (добавьте еще одно предложение catch). Но не уверен, что мне следует перейти к пункту «Уловка».
Комментарии:
1. Почему вы не можете просто использовать
else
, если не хотите выполнять все остальное?