dart:indexed_db 库
一个支持索引的客户端键值存储。
注意
新项目应优先使用 package:web。对于现有项目,请参阅我们的 迁移指南。
IndexedDB 是一个用于客户端结构化数据存储的 Web 标准 API。通过在 IndexedDB 中存储数据,应用程序可以受益于更快的性能和持久性。
在 IndexedDB 中,每个记录都由一个唯一的索引或键标识,这使得数据检索非常快速。您可以使用 IndexedDB 存储结构化数据,例如图像、数组和映射。该标准没有指定单个数据项或数据库本身的尺寸限制,但浏览器可能设置存储限制。
使用 indexed_db
此库中的类提供了对浏览器 IndexedDB 的接口,如果有的话。要在您的代码中使用此库
import 'dart:indexed_db';
现代网络浏览器几乎普遍支持 IndexedDB,但 Web 应用可以使用 IdbFactory.supported 确定浏览器是否支持 IndexedDB。
if (IdbFactory.supported)
// Use indexeddb.
else
// Find an alternative.
通过应用程序的顶级 Window 对象提供对浏览器 IndexedDB 的访问,您可以使用 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
- 一个用于在 Web 应用中存储客户端数据的索引数据库对象。
- IdbFactory
- Index
- KeyRange
- ObjectStore
- Observation
- Observer
- ObserverChanges
- OpenDBRequest
- Request
- Transaction
- VersionChangeEvent
类型定义
- ObserverCallback = void Function(ObserverChanges changes)