java/kotlin 模块内的 Jetpack Paging 3

2023-12-29

我正在开发一个具有干净架构原则的应用程序。我有一个domain模块是一个Java/Kotlin模块并且它没有 android 依赖项和domainImpl模块是一个Android模块并具有依赖关系local, remote and domain模块。这是一个Repository里面的例子domain module:

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

下面的代码是它的内部实现domainImpl module:

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模块?或者还有其他解决方法吗?


Paging 的非 android 组件位于androidx.paging:paging-common- 根据定义,对 Presenter API 的任何依赖项都是 Android 特定的,因此与以下内容相关的任何代码RecyclerView, LazyColumn等需要特定于 Android。

However PagingSource, PagingData, Pager, RemoteMediator全部由paging-common,所以你对这些类的实现,包括你的转换链和整体输出Flow<PagingData>可以完全脱离android。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java/kotlin 模块内的 Jetpack Paging 3 的相关文章

随机推荐