cache static method

void cache(
  1. String key,
  2. Map<String, List<Map<String, Object?>?>?> data, {
  3. Map<String, Object?>? jParam,
})

Implementation

static void cache(String key, Map<String, List<Map<String, Object?>?>?> data,
    {Map<String, Object?>? jParam}) async {
  _preferences = _preferences ?? await SharedPreferences.getInstance();

  jParam?.forEach((key, value) {
    if (key == 'PageNumber' || key == '@PageNumber') {
      int page = Methods.getInt(jParam, key);
      if (page > 1) {
        return;
      }
    }
  });

  if (_preferences!.containsKey(key)) {
    bool isReCache = false;
    String? sData = _preferences!.getString(key);
    if (sData != null) {
      var mapData = _stringToMap(sData);
      data.forEach((keyMap, value) {
        var listData = Methods.getList(data, keyMap);
        if (mapData.containsKey(keyMap)) {
          var listTempDdata = Methods.getList(mapData, keyMap);
          if (listTempDdata.length > listData.length) {
            isReCache = true;
            return;
          }
        }
      });
    }
    if (!isReCache) {
      return;
    }
    await _preferences!.remove(key);
  }

  await _preferences!.setString(key, json.encode(data));
}