在Dart中使用IndexedDb对象存储

在Dart中使用IndexedDb对象存储,dart,indexeddb,dart-html,Dart,Indexeddb,Dart Html,我一直在尝试使用Dart的IndexedDb包从IndexedDb实例获取单个条目。但是我调用getObject(),文档中说它返回一个未来*(一个我不知道的未来),我没有任何映射或其他对象可以使用 store.getObject(id.then()方法中的Future返回什么?如果它没有返回任何内容,如何获取存储在数据库中的信息 //在TurnObjectStore类中 未来getTurn(int-id){ 事务t=_db.Transaction(_TABLE_NAME,'readonly')

我一直在尝试使用Dart的IndexedDb包从IndexedDb实例获取单个条目。但是我调用
getObject()
,文档中说它返回一个
未来
*(一个我不知道的未来),我没有任何
映射
或其他对象可以使用

store.getObject(id.then()
方法中的
Future
返回什么?如果它没有返回任何内容,如何获取存储在数据库中的信息

//在TurnObjectStore类中
未来getTurn(int-id){
事务t=_db.Transaction(_TABLE_NAME,'readonly');
ObjectStore=t.ObjectStore(\u表\u名称);
返回store.getObject(id).then((映射回合){
打印('getTurn');
打印(转);
回程;
});
}
这里回答了一个类似的问题,但当我尝试这样做时,IDE中会出现警告,我想知道自去年以来规范是否发生了变化


我使用的是Dart 1.2和获取对象(id)工作正常

我相信返回的未来类型取决于数据库中存储的内容。。。 如果确实将数据保存为对象的贴图,它将返回一个贴图

将对象存储并还原为地图,您可以查看:

//将其序列化为要插入数据库的对象(映射)。
地图托劳(){
返回{
“milestoneName”:milestoneName,
“happensOn”:happensOn.toString(),
};
}
//基于IndexedDB返回的映射创建里程碑
里程碑.fromRaw(键,映射值):
dbKey=key,
milestoneName=值['milestoneName'],
happensOn=DateTime.parse(值['happensOn']){
勾选();
}
您可以直接从chrome的开发者工具中看到存储的对象,对于存储的地图,它应该如下所示:

因此,我可以使用getObject返回对象:

var tr=mydb.transaction(mydb.CLIENT_STORE,'readonly');
var st=tr.objectStore(myDB.CLIENT_STORE);
st.getObject(2)。然后((r){
Client Client=new Client.fromRaw(2,r);
[...]
}