我已经创建了一个服务类来读取JSON文件并将其内容存储在Class中。
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()]);
}
我有几种处理数据的方法。
问题在于曾经有一次函数每次都读取数据。是否可以使服务仅读取一次文件并使用所有功能都可以使用的Map?我不确定这在Dart中叫什么。
答案 0 :(得分: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;
}