createInstance static method

Dio createInstance({
  1. required String baseUrl,
  2. Duration connectTimeout = const Duration(seconds: 30),
  3. Duration receiveTimeout = const Duration(seconds: 30),
  4. Duration sendTimeout = const Duration(seconds: 30),
  5. Map<String, dynamic>? headers,
  6. List<Interceptor> interceptors = const [],
  7. ResponseType responseType = ResponseType.json,
  8. bool validateStatus(
    1. int?
    )?,
})

Create a new Dio instance for multiple API endpoints

Use this when you need to communicate with multiple different APIs with different configurations.

Example:

final paymentApi = KeystoneNetwork.createInstance(
  baseUrl: 'https://payment-api.example.com',
  headers: {'X-Payment-Key': 'xxx'},
  interceptors: [
    PaymentAuthInterceptor(),
  ],
);

final analyticsApi = KeystoneNetwork.createInstance(
  baseUrl: 'https://analytics-api.example.com',
  headers: {'X-Analytics-Key': 'yyy'},
);

Implementation

static Dio createInstance({
  required String baseUrl,
  Duration connectTimeout = const Duration(seconds: 30),
  Duration receiveTimeout = const Duration(seconds: 30),
  Duration sendTimeout = const Duration(seconds: 30),
  Map<String, dynamic>? headers,
  List<Interceptor> interceptors = const [],
  ResponseType responseType = ResponseType.json,
  bool Function(int?)? validateStatus,
}) {
  final dio = Dio(
    BaseOptions(
      baseUrl: baseUrl,
      connectTimeout: connectTimeout,
      receiveTimeout: receiveTimeout,
      sendTimeout: sendTimeout,
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        ...?headers,
      },
      responseType: responseType,
      validateStatus: validateStatus ?? _defaultValidateStatus,
    ),
  );

  // Add interceptors
  if (interceptors.isNotEmpty) {
    dio.interceptors.addAll(interceptors);
  }

  return dio;
}