init method

Future<void> init({
  1. Dio? dio,
  2. required String baseUrl,
  3. int? connectTimeout,
  4. int? receiveTimeout,
  5. Map<String, dynamic>? headers,
  6. Map<String, dynamic>? queryParameters,
  7. Options? request,
  8. Future<Map<String, dynamic>?> setAuthorizationToken()?,
  9. BaseOptions? options,
  10. GrockDioLogger? logger,
})

main.dart initialize BaseOptions

void main() {
  GrockDioServices.instance.init(
    baseUrl: 'https://jsonplaceholder.typicode.com',
    connectTimeout: 5000,
    receiveTimeout: 3000,
    logger = GrockDioLogger.default(),
    setAuthorizationToken: () async {
      final tokenValue = await getToken();
      final mapData = {"Authorization": "Bearer $tokenValue"};
      return mapData;
    },
  );
  runApp(MyApp());
}

and use Api Request ----------------- request example -----------------

final request = await GrockDioServices.request(
 method: GrockDioType.get,
 path: '/posts',
 queryParameters: {"userId": 1},
).grockResponseHandler(
  success: (response) => Model.fromJson(response.data),
  error: (err) => Toast.show(err.toString()),
  loading: () => print("loading"),
  done: () => print("done"),
);

Implementation

Future<void> init({
  /// optionally you can add your own Dio
  Dio? dio,

  /// added required String baseUrl,
  required String baseUrl,

  /// added milliseconds
  int? connectTimeout,

  /// added milliseconds
  int? receiveTimeout,

  /// added headers
  Map<String, dynamic>? headers,

  /// added queryParameters
  Map<String, dynamic>? queryParameters,

  /// optionally you can add your own BaseOptions
  Options? request,

  /// async get token and headers add token
  /// ```dart
  /// void main() async {
  ///  WidgetsFlutterBinding.ensureInitialized();
  ///  await GrockDioServices.instance.init(
  ///   baseUrl: 'https://jsonplaceholder.typicode.com',
  ///   setAuthorizationToken: () async {
  ///     final tokenValue = await getToken();
  ///     final mapData = {"Authorization": "Bearer $tokenValue"};
  ///     return mapData;
  ///   },
  /// );
  /// runApp(MyApp());
  /// ```
  Future<Map<String, dynamic>?> Function()? setAuthorizationToken,

  /// or set BaseOptions
  BaseOptions? options,

  /// Optionally you can add logger
  GrockDioLogger? logger,
}) async {
  if (setAuthorizationToken != null) {
    final token = await setAuthorizationToken();
    if (token != null) {
      (headers ??= {}).addAll(token);
    }
  }
  _dio = dio ??
      Dio(
        options ??
            BaseOptions(
              baseUrl: baseUrl,
              connectTimeout: connectTimeout?.milliseconds,
              receiveTimeout: receiveTimeout?.milliseconds,
              headers: headers,
              queryParameters: queryParameters,
              responseType: ResponseType.json,
              contentType: Headers.jsonContentType,
              validateStatus: (status) => status! < 500,
            ),
      );

  if (logger != null && logger != GrockDioLogger.off()) {
    _dio.interceptors.add(LogInterceptor(
        responseBody: logger.requestBody,
        request: logger.request,
        requestHeader: logger.requestHeader,
        responseHeader: logger.responseHeader,
        error: logger.error,
        requestBody: logger.requestBody));
  }
}