java/kotlin模块中的Jetpack Paging 3



我正在开发一个具有清晰架构原则的应用程序。我有一个domain模块,它是一个Java/Kotlin模块,它没有安卓依赖,一个domainImpl模块,它是一个Android模块,它依赖于local,remotedomain模块。这是domain模块中的Repository示例:

interface MovieRepository {
fun getMovie(id: Long): Flow<Movie>
}

和下面的代码是它在domainImpl模块中的实现:

class MovieRepositoryImpl(
private val movieApi: MovieApi
) : MovieRepository {
override fun getMovie(id: Long): Flow<Movie> = flow {
emit(movieApi.getMovie(id))
}
}

在这种情况下一切都很好。但现在我试图添加Android Paging 3为我的分页。所以我必须添加一个方法到MovieRepository接口,如:

fun getMovies(): Flow<PagingData<Movie>>

但在此之前,我必须将分页库添加到我的domain模块,但不幸的是它是Android库,我找不到它的核心依赖项。那么我能做些什么呢?我必须改变我的domain模块,因为这个android模块?或者有其他的解决方法吗?

分页的非android组件在androidx.paging:paging-common中-任何依赖于演示器api的定义都是android特定的,因此任何与RecyclerView,LazyColumn等相关的代码都需要针对android。

但是PagingSource,PagingData,Pager,RemoteMediator都是由paging-common提供的,所以你对这些类的实现,包括你的转换链和Flow<PagingData>的整体输出都可以完全不依赖于android。

相关内容

  • 没有找到相关文章

最新更新