initialize static method
void
initialize({
- 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?
Initialize KeystoneNetwork with configuration
This should be called once during app startup, typically in main().
Parameters:
baseUrl: Base URL for all requests (optional)connectTimeout: Connection timeout durationreceiveTimeout: Response receive timeout durationsendTimeout: Request send timeout durationheaders: Default headers for all requestsinterceptors: List of Dio interceptorsresponseType: Default response type (json, plain, bytes, stream)validateStatus: Custom status code validation
Example:
KeystoneNetwork.initialize(
baseUrl: 'https://api.example.com',
connectTimeout: Duration(seconds: 30),
headers: {
'Accept': 'application/json',
'X-App-Version': '1.0.0',
},
interceptors: [
AuthInterceptor(
tokenManager: myTokenManager,
dioProvider: KeystoneNetwork.dioProvider,
),
LoggingInterceptor(),
],
);
Implementation
static void initialize({
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,
}) {
_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,
),
);
// Create DioProvider for interceptors
_dioProvider = DefaultDioProvider(_dio!);
// Add interceptors
if (interceptors.isNotEmpty) {
_dio!.interceptors.addAll(interceptors);
}
}