如何在Sembast记录中的映射内监听单个值?

问题描述

文档讨论了监听记录,但是如何监听记录中的单个字段?假设记录包含地图。

假设我有一个User类,如下所示:

class User {

final String uid; // used as key in Sembast
final String name;
bool isverified;

/// Used to store data to Sembast
Map<String,dynamic> toMap() => {
   'uid': uid,'name': name,'isverified': isverified,};


}

当我将其保存在本地时,

final _store = stringMapStoreFactory.store('userStore');

// Store data:
await _store.record(user.uid).put(database,user.toMap());

然后我要在页面中的某处收听isverified字段的更改,而无需获取整个User信息。我该怎么办?

因为_store.record(user.uid).onSnapshot(database)返回该Stream<RecordSnapshot>类的全部数据中的User

谢谢

解决方法

类似于firestore,您只能侦听整个记录更改(或存储中的查询),而不能侦听记录中的单个字段更改。附带说明,获取“完整”记录并不昂贵,因为该记录已准备好在内存中使用。