Статические функции в Dart — вызов только один раз

Я создал класс обслуживания для чтения файла 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.

0
0
1 370
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  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; 
  }

Другие вопросы по теме