createInstance static method
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 validateStatus(
- 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;
}