init method

Future<void> init({
  1. Future<void> onReinitializeDio()?,
  2. List<Environment>? environments,
  3. @Deprecated('Use environments parameter instead') List<Environment>? customEnvironments,
})

Initialize configuration from stored preferences

onReinitializeDio - Optional callback to reinitialize Dio when environment changes environments - Optional list of custom environments to use instead of defaults customEnvironments - Deprecated: Use environments instead

Implementation

Future<void> init({
  Future<void> Function()? onReinitializeDio,
  List<Environment>? environments,
  @Deprecated('Use environments parameter instead')
  List<Environment>? customEnvironments,
}) async {
  // Support both parameters for backward compatibility
  final envList = environments ?? customEnvironments;
  if (envList != null && envList.isNotEmpty) {
    _environments = envList;
  }
  if (onReinitializeDio != null) {
    this.onReinitializeDio = onReinitializeDio;
  }
  final savedBaseUrl = DevToolsPreferences.getData(key: _baseUrlKey);
  final savedEnvName = DevToolsPreferences.getData(key: _environmentNameKey);

  // Use saved values if available, otherwise use build-mode defaults
  if (savedBaseUrl != null && savedEnvName != null) {
    _currentBaseUrl = savedBaseUrl;
    _currentEnvironmentName = savedEnvName;
  } else {
    // First run - set defaults based on build mode
    _currentBaseUrl = defaultEnvironment.baseUrl;
    _currentEnvironmentName = defaultEnvironment.name;
  }

  // In release mode, disable logging by default
  if (isRelease) {
    _dioLoggerEnabled =
        DevToolsPreferences.getData(key: _dioLoggerEnabledKey) ?? false;
    _networkAnalysisEnabled = false; // Always disabled in release
  } else {
    _dioLoggerEnabled =
        DevToolsPreferences.getData(key: _dioLoggerEnabledKey) ?? true;
    _networkAnalysisEnabled =
        DevToolsPreferences.getData(key: _networkAnalysisEnabledKey) ?? false;
  }

  _isInitialized = true;
}