Skip to content

Конфигурация

Приложение конфигурируется через Remote Config

Существует несколько механик для создания конфигов

LocalizedConfig

LocalizedConfig представляет собой обертку над обычным сериализуемым конфигом.

При попытке распарсить значение происходит несколько попыток прочитать оригинальный JSON с разными стратегиями

  1. data[language] - попытка прочитать JSON по ключу текущего языка
  2. data['*'] - попытка прочитать JSON по ключу любого языка
  3. data[baseLanguage] - попытка прочитать JSON по ключу базового языка
  4. data - попытка прочитать JSON как есть
  5. data.entries.first - попытка прочитать JSON по первому значению

Если ни одна из стратегий не увенчалась успехом возвращает null или результат вызова fallbackBuilder

Пример:

jsonc
# olympiad_config
{
  "ru": {
    "rules": {
      "title": "Привет мир!",
      "items": [
        "Олимпиада проходит каждый день. У тебя есть 24 часа, чтобы пройти тест",
        "Время на вопросы в тесте ограничено.\nНа каждый вопрос  30 секунд",
        "Пока ждешь окончания Олимпиады,\nмы считаем баллы участников",
        "Победителем станет тот, кто набрал больше всего баллов. Если баллы равны, то победит тот, у кого больше пройденных саммари за период Олимпиады",
      ]
    }
  },
  "*": {
    "rules": {
      "title": "Hello world!",
      "items": [
        "The Olympiad takes place every week. You have 5 days to take the test",
        "In the test, you answer all the questions in a limited time. There is only one attempt",
        "You are waiting for the end of the Olympiad, and we count the points of all participants",
        "The winner will be the one who scored the most points. If the scores are equal, then the winner is the one with the most completed sammaris during the Olympics",
      ]
    }
  },
}
dart
final json = getIt<AFIRemoteConfig>().getJson('olympiad_config');

return LocalizedConfig(
  data: json,
  builder: OlympiadConfig.fromJson,
  fallbackBuilder: () => OlympiadConfig.fallback(),
).resolve()

Авторы

The avatar of contributor named as melvspace melvspace

История