initialize method

Future<bool> initialize({
  1. required String baseUrl,
  2. Map<String, String>? headers,
  3. int? connectionTimeout,
  4. int? receiveTimeout,
})

Initialize the API client.

Sets up the HTTP client with base URL, headers, and timeout configuration. Also initializes secure storage and loads any previously stored tokens.

baseUrl is the base URL of your Magento instance headers optional custom headers to include with all requests connectionTimeout timeout for establishing connection in milliseconds receiveTimeout timeout for receiving data in milliseconds

Returns true if initialization was successful, false otherwise.

Implementation

Future<bool> initialize({
  required String baseUrl,
  Map<String, String>? headers,
  int? connectionTimeout,
  int? receiveTimeout,
}) async {
  try {
    _baseUrl = baseUrl;

    // Initialize secure storage
    _secureStorage = const FlutterSecureStorage();

    // Load stored tokens
    await _loadStoredTokens();

    // Setup Dio client
    _dio = Dio(
      BaseOptions(
        baseUrl: baseUrl,
        connectTimeout: Duration(seconds: connectionTimeout ?? 30),
        receiveTimeout: Duration(seconds: receiveTimeout ?? 30),
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          ...?headers,
        },
      ),
    );

    // Add interceptors
    _setupInterceptors();

    return true;
  } catch (e) {
    print('Failed to initialize MagentoApiClient: $e');
    return false;
  }
}