Closed KXwonderful closed 1 year ago
// dispatcher
class TestRequester : MviDispatcherKTX
可以看看此处的 testRepo.getTestList() 后边是否遗漏了 .cachedIn(viewModelScope) 所致,
另外 paging 有自己独立的 flow 作为返回,适合传统方式使用, 如果要走 Dispatcher 的 input output(这里面是 Dispatcher 自身的 shareFlow 及其 collect,而非 paging 的 flow 和 collect),建议是在 Dispatcher 中调用 paging flow 的 collect,再将 “普通的实体类对象” 作为结果 sendResult 回推。
(对此可参考 complexRequest 案例:is ComplexIntent.ResultTest2 -> timer(1000).collect { sendResult(event) }
)
// dispatcher class TestRequester : MviDispatcherKTX() { ... is TestEvent.GetTestList -> sendResult(event.copy(testRepo.getTestList())) }
可以看看此处的 testRepo.getTestList() 后边是否遗漏了 .cachedIn(viewModelScope) 所致,
和这个没关系的。
主要原因还是在 viewModelScope 作用域中并不能成功消费 PagingData,只能在 Activity 或者 Fragment 中 collect 才会触发paging3中数据请求,因此在 Dispatcher 中也无法分发 PagingData。
(对此可参考 complexRequest 案例:
is ComplexIntent.ResultTest2 -> timer(1000).collect { sendResult(event) }
)
这个案例用在 PagingData 的回推也是无效。
感谢反馈,暂时建议传统方式。后续如有破局的好招,欢迎随时补充。
在项目中集成 Paging 3,但用在这个框架里发现并不能触发请求操作,参考代码如下:
如果用传统的 ViewModel 测试是没问题,可以触发,参考代码如下: