initialize static method

void initialize({
  1. 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?
    )?,
})

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 duration
  • receiveTimeout: Response receive timeout duration
  • sendTimeout: Request send timeout duration
  • headers: Default headers for all requests
  • interceptors: List of Dio interceptors
  • responseType: 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);
  }
}