config_manager 0.1.0 copy "config_manager: ^0.1.0" to clipboard
config_manager: ^0.1.0 copied to clipboard

A JSON-based configuration manager with dot-notation access to nested values, singleton pattern, and mixin support.

example/main.dart

import 'package:config_manager/config_manager.dart';

class AppService with ConfigExtension {
  void printInfo() {
    print('--- Via ConfigExtension mixin ---');
    print('appName: ${getConfig('appName')}');
    print('db host: ${getConfig('database.host')}');
    print('db user: ${getConfig('database.credentials.user')}');
    print('first feature: ${getConfig('features.0')}');

    final servers = getConfig('servers') as List? ?? [];
    for (final server in servers) {
      print('server via mixin: ${server['name']} (${server['region']})');
    }
  }
}

void main() {
  final config = ConfigManagerSingleton();
  config.loadFromJson('example/config.json');

  print('--- Via ConfigManagerSingleton ---');

  print('appName: ${config.get('appName')}');

  print('db port: ${config.get('database.port')}');
  print('db user: ${config['database.credentials.user']}');

  print('--- Lists via casting ---');

  final features =
      (config.get('features') as List?)?.cast<String>() ?? [];
  print('features: $features');
  print('feature count: ${features.length}');

  for (final feature in features) {
    print('feature: $feature');
  }

  final servers = config.get('servers') as List? ?? [];
  for (final server in servers) {
    final map = server as Map<String, dynamic>;
    print('server: ${map['name']} -> ${map['region']}');
  }

  config.set('ports', [8080, 8081, 8082]);
  final ports = (config.get('ports') as List?)?.cast<int>() ?? [];
  print('ports: $ports');

  config.set('database.replicas', ['replica-1', 'replica-2']);
  print('nested list: ${config.get('database.replicas')}');

  print('--- Lists + dot notation ---');

  print('second feature: ${config.get('features.1')}');
  print('first server name: ${config.get('servers.0.name')}');
  print('second server region: ${config.get('servers.1.region')}');
  print('first replica: ${config.get('database.replicas.0')}');

  print('--- Writes and edge cases ---');

  config.set('database.credentials.password', 's3cret');
  print('written nested value: ${config.get('database.credentials.password')}');

  print('missing key: ${config.get('does.not.exist')}');
  print('index out of range: ${config.get('features.99')}');
  print('missing list: ${config.get('noSuchList') as List? ?? []}');

  AppService().printInfo();
}
0
likes
0
points
354
downloads

Publisher

unverified uploader

Weekly Downloads

A JSON-based configuration manager with dot-notation access to nested values, singleton pattern, and mixin support.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on config_manager