request<T> method

Future<T?> request<T>({
  1. required Future<Response> call(),
  2. required T onSuccess(
    1. Response response
    ),
  3. bool showLoader = true,
  4. bool showErrorLog = true,
})

COMMON API EXECUTOR

Implementation

Future<T?> request<T>({
  required Future<Response> Function() call,
  required T Function(Response response) onSuccess,
  bool showLoader = true,
  bool showErrorLog = true,
}) async {
  try {
    if (showLoader) _setLoading(true);

    errorMessage = null;

    final Response response = await call();

    return onSuccess(response);
  }

  on DioException catch (e) {
    errorMessage = _parseDioError(e);

    if (showErrorLog) {
      debugPrint("❌ API ERROR → $errorMessage");
    }

    return null;
  }

  catch (e) {
    errorMessage = "Unexpected error occurred";
    debugPrint("❌ UNKNOWN ERROR → $e");
    return null;
  }

  finally {
    if (showLoader) _setLoading(false);
  }
}