dart:indexed_db 库
支持索引的客户端键值存储。
注意
新项目应优先使用 package:web。对于现有项目,请参阅我们的迁移指南。
IndexedDB 是一种用于客户端侧结构化数据存储的 Web 标准 API。通过将数据存储在客户端的 IndexedDB 中,应用程序可以获得如更快性能和持久性等优势。
In IndexedDB 中,每个记录都由一个唯一的索引或键标识,使得数据检索更快。您可以使用 IndexedDB 存储结构化数据,如图像、数组和映射。该规范并未指定单个数据项或数据库本身的大小限制,但浏览器可能会施加存储限制。
使用 indexed_db
此库中的类提供了对浏览器索引数据库的接口,如果浏览器有该功能。要在您的代码中使用此库
import 'dart:indexed_db';
现代网页浏览器几乎都支持 IndexedDB,但网页应用程序可以使用 IdbFactory.supported 确定浏览器是否支持 IndexedDB。
if (IdbFactory.supported)
// Use indexeddb.
else
// Find an alternative.
通过应用程序的最高级别 Window 对象提供对浏览器索引数据库的访问,您的代码可以使用 window.indexedDB
来引用。例如,以下是如何使用 window.indexedDB 打开数据库的示例
Future open() {
return window.indexedDB.open('myIndexedDB',
version: 1,
onUpgradeNeeded: _initializeDatabase)
.then(_loadFromDB);
}
void _initializeDatabase(VersionChangeEvent e) {
...
}
Future _loadFromDB(Database db) {
...
}
IndexedDB 中所有数据都存储在ObjectStore中。要操作数据库,请使用Transaction。
其他资源
客户端数据存储的其他选项包括
- Window.localStorage—一种简单机制,将数据作为Map存储,其中键和值都是字符串。
MDN 提供了API 文档。
类
- Cursor
- CursorWithValue
- Database
- 一个索引数据库对象,用于在网页应用程序中存储客户端数据。
- IdbFactory
- Index
- KeyRange
- ObjectStore
- Observation
- Observer
- ObserverChanges
- OpenDBRequest
- Request
- Transaction
- VersionChangeEvent
类型定义
- ObserverCallback = void Function(ObserverChanges changes)