handleAPICall<R> method
Future<void>
handleAPICall<
R>({ - Emitter<State>? emitter,
- required Future<Either<AppError, R>> call,
- required dynamic onSuccess(
- R data
),
- required dynamic onFailure(
- String error
),
})
Implementation
Future<void> handleAPICall<R>({
Emitter<State>? emitter,
required Future<Either<AppError, R>> call,
required Function(R data) onSuccess,
required Function(String error) onFailure,
}) async {
if (isClosed) return;
try {
final Either<AppError, R> apiResponse = await call;
return apiResponse.fold(
(AppError error) => emitter != null
? emitter(_mapErrorToState(error, onFailure))
: emit(_mapErrorToState(error, onFailure)),
(R data) =>
emitter != null ? emitter(onSuccess(data)) : emit(onSuccess(data)),
);
} catch (e) {
emit(onFailure("An unexpected error occurred: $e"));
}
}