Конфигурация
Приложение конфигурируется через Remote Config
Существует несколько механик для создания конфигов
LocalizedConfig
LocalizedConfig представляет собой обертку над обычным сериализуемым конфигом.
При попытке распарсить значение происходит несколько попыток прочитать оригинальный JSON с разными стратегиями
data[language]
- попытка прочитать JSON по ключу текущего языкаdata['*']
- попытка прочитать JSON по ключу любого языкаdata[baseLanguage]
- попытка прочитать JSON по ключу базового языкаdata
- попытка прочитать JSON как есть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()