小编Mut*_*san的帖子

使用 StateFlow 和分页的 Android MVI 3

我正在尝试使用状态流和分页 3 来实现 android MVI 架构,但是当我有一个包含分页数据的视图状态时,我感到很困惑。

\n

问题是我将视图模型中的视图状态公开为状态流对象,但现在在该视图状态内我有另一个来自分页库的流对象。

\n

状态流中可以有一个流吗?如果它\xe2\x80\x99s 不是我应该做什么?

\n

这是我的代码,以供更多说明。

\n

任务库

\n
override fun list(\npageNumber: Int,\npageSize: Int,\ngroupId: Long?,\nquery: String\n): Flow<PagingData<Task>> {\nreturn Pager(\n    config = PagingConfig(\n        pageSize = Consts.PageSize,\n        maxSize = 200,\n        enablePlaceholders = false\n    ),\n    remoteMediator = TaskRemoteMediator(query, groupId, db, taskApi),\n    pagingSourceFactory = {\n        TaskDataSource(taskApi, groupId, query)\n    }\n).flow\n}\n
Run Code Online (Sandbox Code Playgroud)\n

任务视图模型

\n
viewModelScope.launch {\ntry {\n    _taskListViewState.emit(TaskListViewState.Loading)\n    val tasks = taskRepo.list(1, Consts.PageSize, intent.groupId, "")\n    _taskListViewState.emit(TaskListViewState.Data(tasks))\n} catch (e: Exception) {\n    _taskListViewState.emit(TaskListViewState.Error(R.string.unknown_error))\n}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

任务列表视图状态

\n
sealed class TaskListViewState {\nobject Idle …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-paging-3 kotlin-stateflow

18
推荐指数
1
解决办法
1704
查看次数