Add configuration provider and simple provider functions

This commit is contained in:
2021-03-24 13:24:40 +07:00
commit 57f3cd483e
11 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
abstract class ConfigurationProvider {
bool containsKey(String key);
String? getOrNull(String key, {String? defaultValue});
}

View File

@@ -0,0 +1,22 @@
import 'package:configurable/configuration_provider.dart';
class SimpleConfigurationProvider implements ConfigurationProvider {
Map<String, String?> configs = {};
@override
String? getOrNull(String key, {String? defaultValue}) {
var value = configs[key];
if (value == null) {
configs[key] = defaultValue;
return defaultValue;
}
return value;
}
@override
bool containsKey(String key) {
return configs.containsKey(key);
}
}

26
lib/system_config.dart Normal file
View File

@@ -0,0 +1,26 @@
import 'package:configurable/configuration_provider.dart';
import 'package:configurable/simple_configuration_provider.dart';
class SystemConfig {
static ConfigurationProvider? provider;
static void setProvider(ConfigurationProvider provider) {
SystemConfig.provider = provider;
}
static ConfigurationProvider getProvider() {
if (provider == null) {
setProvider(SimpleConfigurationProvider());
}
return provider!;
}
static String get(String key, {String? defaultValue}) {
return getOrNull(key, defaultValue: defaultValue)!;
}
static String? getOrNull(String key, {String? defaultValue}) {
return getProvider().getOrNull(key);
}
}