settings_yaml 3.3.0 copy "settings_yaml: ^3.3.0" to clipboard
settings_yaml: ^3.3.0 copied to clipboard

outdated

Provides a simple means of saving/loading settings from a yaml file without the yaml fuss.

Provide a very simple method to use yaml files for reading/writing an app's configuration.

Saving a config data #

void save() {
  /// create a new .settings.yaml
  var settings = SettingsYaml.load(pathToSettings: '.settings.yaml');

  settings['dbname'] = 'billing';
  settings['dbusername'] = 'username';
  settings['dbpassword'] = 'apassword';
  settings['timeout'] = 200;
  settings['ats'] = <String>['cat', 'bat', 'rat'];
  settings['hosts'] = <String, String>{
        'host1': 'one',
        'host2': 'two',
        'host3': 'three'
      };

  settings.save();
}

Loading config data #

void load() {

  /// load an existing .settings.yaml, if it doesn't exist then create it.
  var settings = SettingsYaml.load(pathToSettings: '.settings.yaml', create: true);

  var dbname = settings['dbname'] as String;
  var username = settings['dbusername']as String;
  var password = settings['dbpassword']as String;
  var timeout = settings['timeout']as String;
  var ats = settings['ats']; // List<dynamic>

  List<String> atsAsString = yaml.asStringList['ats'];
  var hosts = settings['hosts'] as Map<String, String>;

  settings['a_String'] = 'hello world';
  settings['an_int'] = 10;
  settings['a_double'] = 10.0;
  settings['a_bool'] = true;

  var a_String = settings.asString('a_String');
  var an_int = settings.asInt('an_int');
  var a_double = settings.asDoule('a_double');
  var a_bool = settings.asBool('a_bool');


  print('dbname $dbname, username: $username, password: $password, timeout: $timeout');

  /// change something
  var newPassword = ask('password');
  settings['dbpassword'] = newPassword;
  settings['hosts'] = <String, String>{
        'host1': 'one',
        'host2': 'two',
        'host3': 'three';
  settings['ats'] = <String>['cat', 'bat', 'rat'];

  settings.save();
}

Access nested content #

SettingsYaml also provides access to nested attributes using path selectors:

 var content = '''name: brett
hostname: slayer
port: 10
active: true
volume: 10.0
imageid: "65385002e970"
people:
  - person:
    name: brett
  - person:
    name: john
''';

    var settings = SettingsYaml.fromString(content: content, filePath: path);
    // use a path selector to read an attribute.
    expect(settings.selectAsString('people.person[0].name'), equals('brett'));
    expect(settings.selectAsString('people.person[1].name'), equals('john'));

Each selector is made up of a word.

To access an element in a list use 'word[n]'. where 'n' is the nth instance of the word in a yaml array.

e.g.

one:
  - two
  - two
    three:
      four: value

To return the value of four

traverse('one.two[1].three.four') == 'value'

Regex to extract the index from an array selector of the form 'word[n]'

16
likes
0
pub points
73%
popularity

Publisher

verified publisheronepub.dev

Provides a simple means of saving/loading settings from a yaml file without the yaml fuss.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

collection, meta, path, uuid, yaml

More

Packages that depend on settings_yaml