如何使用IndexedDB和Dart打开数据库? API与JavaScript的不完全相同。
答案 0 :(得分:7)
新的IndexedDB API使用Dart对Streams和Futures的支持。以下是使用Dart M3或更高版本打开IndexedDB数据库的方法:
import 'dart:html';
import 'dart:indexed_db';
import 'dart:async';
Future<Database> openDatabase(String dbName, String storeName, {int version:1}) {
return window.indexedDB.open(dbName, version: version,
onUpgradeNeeded: (e) {
Database db = e.target.result;
if (!db.objectStoreNames.contains(storeName)) {
db.createObjectStore(storeName);
}
});
}
main() {
openDatabase('test-db', 'test-store').then((Database db) {
// do database stuff
});
}
在此代码中,window.indexedDB.open
调用返回Future<Database>
,它在数据库打开时完成。
当数据库的版本与指定的版本不匹配时,将运行onUpgradeNeeded
函数。