我已经创建了Realm对象,并将其连接到MongoDB Atlas。
在Flutter StreamBuilder小部件中,stream参数将RealmResults.changes作为一个流,它可以工作。
StreamBuilder<MyObject>(
stream: RealmResults.changes, //works
builder: (context, snapshot) => ()
),
字符串
但是如果使用StreamProvider,则需要流的create参数不接受RealmResults.changes作为流。
StreamProvider<MyObject>(
initialData: MyObject(),
create: (context) => RealmResults.changes, //error
child: Scaffold()
)
型
这里红色显示的错误是:返回类型'Stream<RealmResultsChanges>'不是'Stream?',因为闭包的上下文需要。我很困惑,有人能帮助我吗?谢谢
1条答案
按热度按时间c6ubokkw1#
该错误表明流的预期返回类型与create参数中闭包所需的类型不匹配。
出现此错误是因为
RealmResults.changes
返回Stream<RealmResultsChanges<MyObject>>
,但StreamProvider
中的create参数需要Stream<MyObject>
。要解决这个问题,您需要将从
RealmResults.changes
获得的流转换为MyObject
的流。您可以使用map方法从更改流中提取必要的数据来实现这一点。下面是一个示例,说明如何执行此操作:
字符串
将
MyObject
替换为实际的对象类型,并调整map中的逻辑,以满足从更改流中检索更新对象的特定需求。这样,您就可以将来自
Realm
的更改流转换为所需对象类型(MyObject)
的流,使其与StreamProvider
的期望兼容。