network<T> method

Future<T> network<T>({
  1. required Future<ResponseModel<T>> request(),
  2. T? fallback,
  3. bool throwOnError = true,
})

Provides a clean interface for making requests with automatic response handling

Implementation

Future<T> network<T>({
  required Future<ResponseModel<T>> Function() request,
  T? fallback,
  bool throwOnError = true,
}) async {
  try {
    final responseModel = await request();
    if (responseModel.success && responseModel.data != null) {
      return responseModel.data!;
    } else if (fallback != null) {
      return fallback;
    } else if (throwOnError) {
      throw Exception(responseModel.message ?? 'Request failed');
    } else {
      return responseModel.data!;
    }
  } catch (e) {
    if (fallback != null && !throwOnError) {
      return fallback;
    }
    rethrow;
  }
}