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

其他资源

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

MDN 提供了 API 文档

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

类型定义

ObserverCallback = void Function(ObserverChanges changes)