将 pagingData 3 流与另一个流结合起来

jog*_*ghm 6 android kotlin android-paging kotlin-coroutines kotlin-flow

我有一个 pagingData 流对象,我想将其与不同的融合位置流组合起来,以便它将根据 pagingdata 列表的每个项目进行相应的处理。

val point : Flow<Point> 
val pagingDate : Flow<PagingData>
Run Code Online (Sandbox Code Playgroud)

我尝试使用组合和组合变换,但它似乎不起作用,因为当更新应用程序崩溃时,并显示与 pagingData 3 相关的错误消息不能发出两次

java.lang.IllegalStateException: 尝试从pageEventFlow收集两次,这是非法操作。您是否忘记调用 Flow<PagingData<*>>.cachedIn(coroutineScope) ?

我可以选择哪些选项来使用流数据转换分页数据项?

dla*_*lam 5

只是在这里跟进,因为其他人可能会遇到这个问题,尽管OP还没有更新他们的答案。

这通常是由于使用.combine或类似的运算符会重复流中最新发出的值,导致同一实例被使用两次。为了防止这种情况,您可以调用.cachedIn(scope)before.combine()以便多播 Flow,从而为您提供一个预加载缓存数据的 PagingData 的新实例。