Я создал класс обслуживания для чтения файла JSON и сохранения его содержимого в классе.
static getAllKurals() async {
Map<String, dynamic> data = await _parseJsonFromAssets();
return Response.fromJsonMap(data);
}
static Future<Kural> getRandomKural() async {
Map<String, dynamic> data = await _parseJsonFromAssets();
Response response = Response.fromJsonMap(data);
return Future<Kural>.value(response.kurals[getRandomKuralNumber()]);
}
У меня есть несколько таких методов для работы с данными.
Проблема в том, что функция ever каждый раз считывает данные. Можно ли заставить службу прочитать файл только один раз и использовать его карту, доступную для всех функций? Я не уверен, как это называется в Dart.
static Map<String, dynamic> _allKuralsCache;
static getAllKurals() async {
Map<String, dynamic> data = _allKuralsCache ?? await _parseJsonFromAssets();
return Response.fromJsonMap(data);
}
или чтобы Response.fromJsonMap(...) не вызывался каждый раз
static Response _allKuralsCache;
static getAllKurals() async {
if (_dataResponseCache == null) {
Map<String, dynamic> data = _dataCache ?? await _parseJsonFromAssets();
_dataResponseCache = Response.fromJsonMap(data);
}
return _dataResponseCache;
}