我有一个集团:
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());
}
}
在文件返回空值的那一刻,我做了一个 apiCall getDraftResponse
来返回 ResponseDraftSuccess
状态。但当然我的程序一直在执行,并且由于文件为空,uploadPic
api 调用失败,我的程序进入 ResponsesFailure
状态。我想在文件返回 null 时停止事件 RequestImage
的执行(但之后
final response = await PraxApiClient().getDraftResponse(promptId: event.promptId);
yield ResponseDraftSuccess(response: response)
)。错误返回 NoSuchMethodError
: 从空值。我正在考虑在 try 子句之后处理这个问题(添加另一个 catch 子句)但不确定我应该将什么传递给 catch 子句。