查不到api就去源码里看看。在 Pager 类注释中有提到,每个 PagingData 代表支持分页数据的快照,数据刷新时应该提供一个新的 PagingData 实例,其实在各个教程中并没有提到该如何实现跳页功能,通过这段描述就可以想到跳页功能就需要提供一个新的 PagingData 实例。
那么 PagingData 实例是在什么时候提供的,在类 PageFetcher 中有具体的实现
val flow: Flow<PagingData> = channelFlow {
refreshChannel.asFlow()
.onStart {
//…
}
.scan(null) { previousGeneration: PageFetcherSnapshot<Key, Value>?,
triggerRemoteRefresh ->
//…
PageFetcherSnapshot(
initialKey = initialKey,
pagingSource = pagingSource,
config = config,
retryFlow = retryChannel.asFlow(),
triggerRemoteRefresh = triggerRemoteRefresh,
remoteMediatorAccessor = remoteMediatorAccessor,
invalidate = this@PageFetcher::refresh
)
}
.filterNotNull()
.mapLatest { generation ->
PagingData(generation.pageEventF