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);
}
}