currentEnvironment property
Environment
get
currentEnvironment
Get current environment
Implementation
Environment get currentEnvironment {
final currentEnvName = _prefs?.getString(_currentEnvKey);
final hasUserSelected = _prefs?.getBool(_hasUserSelectedKey) ?? false;
// If user has selected an environment before, use saved or first available
if (hasUserSelected) {
if (currentEnvName != null && environments.containsKey(currentEnvName.toLowerCase())) {
return environments[currentEnvName.toLowerCase()]!;
}
// If saved environment not found, return first available
if (environments.isNotEmpty) {
return environments.values.first;
}
}
// First time opening app - return default environment
if (environments.isEmpty) {
// If no environments exist, return a default one
return Environment(
name: EnvironmentType.development.displayName,
baseUrl: 'https://dev-api.example.com',
description: EnvironmentType.development.description,
isDefault: true,
);
}
// Always prefer production as default, then first available
final defaultEnv = environments.values.firstWhere(
(env) => env.name.toLowerCase() == EnvironmentType.production.displayName.toLowerCase(),
orElse: () => environments.values.firstWhere(
(env) => env.isDefault,
orElse: () => environments.values.first,
),
);
// Mark that we're using default (first time)
// Don't set hasUserSelected to true yet - only when user explicitly changes
return defaultEnv;
}