getLocalAllDrawLine method

dynamic getLocalAllDrawLine()

Implementation

getLocalAllDrawLine() async {
  try {
    final prefs = await SharedPreferences.getInstance();
    String jsonStr = prefs.getString('${klineState.widget.propertys['id']}drawlinekey') ?? '';
    // print('存储的k线: ${jsonStr}');
    if (jsonStr != '') {
      allLineData = json.decode(jsonStr);
      //这里判断是否清除很久以前绘制的线
      var now = DateTime.now().millisecondsSinceEpoch;
      var maxT = 86400000*30;//最长保留30天
      var isDel = false;
      for (var key in allLineData.keys) {
        if(now-allLineData[key]['time']>maxT){
          allLineData.remove(key);
          isDel = true;
        }
      }
      if(isDel){
        //从新存储,在颜色反序列化之前
        await prefs.setString('${klineState.widget.propertys['id']}drawlinekey', json.encode(allLineData));
      }
      //颜色反序列化
      for (var lineData in allLineData.values) {
        for(var line in lineData['data'].values){
          int lineL = line.length;
          for (int i = 0; i < lineL; i++) {
            var obj = line[i]['style'];
            for (var entry in obj.entries) {
              if(entry.value is Map){
                if(entry.value['color'] is List){
                  entry.value['color'] = Tools.getColorFromList(entry.value['color']);
                }
                if(entry.value['fillc'] is List){
                  entry.value['fillc'] = Tools.getColorFromList(entry.value['fillc']);
                }
              }
            }
          }
        }
      }
    }
  } catch (error) {
    // print(error);
  }
}