возможно ли иметь файл конфигурации в DART?

У меня есть этот класс JavaScript:

'use strict;'
/* global conf */

var properties = {
    'PROPERTIES': {
        'CHANNEL': 'sport',
        'VIEW_ELEMENTS': {
            'LOADER_CLASS': '.loader',
            'SPLASH_CLASS': '.splash'
        }
    }
};

В JavaScript я могу использовать эти свойства: properties.PROPERTIES.CHANNEL

Можно ли преобразовать это в DART? Есть ли лучшая практика для этого?


person Andrea Bozza    schedule 07.03.2016    source источник


Ответы (2)


Есть разные способы.

Вы можете просто создать карту

my_config.dart

const Map properties = const {
  'CHANNEL': 'sport',
  'VIEW_ELEMENTS': const {
    'LOADER_CLASS': '.loader',
    'SPLASH_CLASS': '.splash'
  }
}

затем используйте его как

main.dart

import 'my_config.dart';

main() {
  print(properties['VIEW_ELEMENTS']['SPLASH_CLASS']);
}

или вы можете использовать классы, чтобы получить правильное автозаполнение и проверку типов

my_config.dart

const properties = const Properties('sport', const ViewElements('.loader', '.splash'));

class Properties {
  final String channel;
  final ViewElements viewElements;
  const Properties(this.channel, this.viewElements;
}

class ViewElements {
  final String loaderClass;
  final String splashClass;
  const ViewElements(this.loaderClass, this.splashClass);
}

main.dart

import 'my_config.dart';

main() {
  print(properties.viewElements.splashClass);
}
person Günter Zöchbauer    schedule 07.03.2016
comment
Я бы также выбрал 2-й, но люди, пришедшие из JS, часто предпочитают меньше классов. Однако, используя одно из этих решений для браузерных приложений, вам необходимо скомпилировать конфигурацию с приложением. - person Günter Zöchbauer; 07.03.2016

Следуя приведенному выше ответу с использованием классов, может быть удобно реализовать статические переменные, недостатком является то, что его все равно необходимо скомпилировать/перестроить.

class CONFIG {
  static final String BUILD = "Release";
  static final String DEPLOYMENT = "None";
}

Это можно использовать из отдельного класса после импорта через:

var xyz = CONFIG.BUILD;
person gieoon    schedule 23.04.2020