我正在尝试使用本地存储来存储任务。
这是我的功能:
void saveTask(_) {
String sum = querySelector('#tsummary').value;
String con = querySelector('#tcontent').value;
String sched = querySelector('#dateinp').value;
String timestamp = new DateTime.now().millisecondsSinceEpoch.toString();
Storage localStorage = window.localStorage;
var dt = localStorage['darttasks'];
if (dt == null) {
localStorage['darttasks'] = JSON.encode([]);
}
var task = {"summary":sum, "content" :con,"scheduled":sched, "id":timestamp};
localStorage['darttasks'] = JSON.encode(JSON.decode(localStorage['darttasks']).add(task));
}
但是,此操作失败,并显示以下错误消息:
异常(exception):空对象没有方法'add'。
NoSuchMethodError: method not found: 'add' Receiver: null Arguments: [Instance of '_LinkedHashMap']
我究竟做错了什么?
提前致谢。
最佳答案
问题是您的最后几行编码void
。列表的.add函数返回void。这是更新的版本:
final String STORAGE_KEY = 'darttasks';
List tasks = [];
if(window.localStorage.containsKey(STORAGE_KEY)) {
tasks = JSON.decode(window.localStorage[STORAGE_KEY]);
// Decoding Error, should not happen
if(tasks == null) {
tasks = [];
}
}
var task = {
"summary": sum,
"content": con,
"scheduled": sched,
"id": timestamp
};
tasks.add(task);
window.localStorage[STORAGE_KEY] = JSON.encode(tasks);
关于dart - 本地存储:将Map <String,String>添加到存储的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675481/