以下代码已作为openCursor的新处理方式发布。有人可以告知以下代码是否现在可以使用(Dart r18915),以及“值”变量是什么?
store.openCursor(autoAdvance: true).listen(
(cursor) => values.add(onCursor(cursor)),
onDone: () => completer.complete(values),
onError: (e) => completer.completeError(e));
return completer.future;
答案 0 :(得分:0)
我不确定你的onCursor()
函数在做什么/正在调用。我假设你的值变量是一个列表。
我自己做了类似的事情,但是回调而不是未来/完成者。你这里只有一个小函数片段。我打算将其刷新一些,希望能添加一些细节:
// Accept the indexeddb Database, and return a future which
// will provide the list of values from 'someKey'
Future<List<String>> getSomeKeyValues(Database db) {
var values = new List<String>();
var completer = new Completer();
var store = db.transaction('DB_STORE', 'readwrite').objectStore('DB_STORE');
store.openCursor(autoAdvance: true).listen((cursor) {
if(cursor != null && cursor.value != null) {
// Note cursor.value is actually a Map<String, String>
// of collection's key and value
values.add(cursor.value['someKey']); // get the value key 'someKey'
}
}, onDone: () => completer.complete(values),
onError: (e) => completer.completeError(e));
return completer.future;
}
然后我们将这个函数称为:
getSomeKeyValues(myDatabase).then((results) {
for(var value in results) {
print(value);
}
}