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

其他资源

客户端数据存储的其他选项包括

MDN 提供了API 文档

Cursor
CursorWithValue
Database
一个索引数据库对象,用于在网页应用程序中存储客户端数据。
IdbFactory
Index
KeyRange
ObjectStore
Observation
Observer
ObserverChanges
OpenDBRequest
Request
Transaction
VersionChangeEvent

类型定义

ObserverCallback = void Function(ObserverChanges changes)