将 pagingData 3 流与另一个流相结合

问题描述

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

val point : Flow<Point> 
val pagingDate : Flow<PagingData>

我尝试使用 combine 和 combineTransform 但它似乎不起作用,因为当重点是更新应用程序崩溃并显示此与 pagingData 3 相关的错误消息无法发出两次

java.lang.IllegalStateException:尝试从 pageEventFlow,这是一个非法操作。你忘记打电话了吗 Flow>.cachedIn(coroutinescope)?

这里有哪些选项可以使用流数据转换分页数据项?

解决方法

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

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