saveDrawLine method

dynamic saveDrawLine()

Implementation

saveDrawLine() async{
  try {
    final prefs = await SharedPreferences.getInstance();
    String lineKey = '${klineState.widget.propertys['id']}_${klineState.widget.propertys['projectType']}_${klineState.widget.propertys['codeId']}_${klineState.widget.propertys['interval']}';
    //对linedata颜色进行序列化
    for (var line in lineData.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 Color){
              var list = Tools.getRGBOFromColor(entry.value['color']);
              entry.value['color'] = list;
            }
            if(entry.value['fillc'] is Color){
              entry.value['fillc'] = Tools.getRGBOFromColor(entry.value['fillc']);
            }
          }
        }
      }
    }
    //其他key处理
    for (var item in allLineData.entries) {
      if(item.key != lineKey){
        Map v = item.value['data'];
        for (var line in v.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 Color){
                  var list = Tools.getRGBOFromColor(entry.value['color']);
                  entry.value['color'] = list;
                }
                if(entry.value['fillc'] is Color){
                  entry.value['fillc'] = Tools.getRGBOFromColor(entry.value['fillc']);
                }
              }
            }
          }
        }
      }
    }
     //复制
    var data = Tools.deepCopy(lineData);
    //存储的时候去掉选中数据
    for (var line in data.values) {
      int lineL = line.length;
      for (int i = 0; i < lineL; i++) {
        if(line[i].containsKey('selected')){
          line[i]['selected'] = false;
        }
      }
    }
    allLineData[lineKey] = { 'data': data, 'time': DateTime.now().millisecondsSinceEpoch };
    //颜色反序列化
    for (var line in lineData.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']);
            }
          }
        }
      }
    }
    await prefs.setString('${klineState.widget.propertys['id']}drawlinekey', json.encode(allLineData));
  } catch (error) {
    // print(error);
  }
}