Closed Albert556 closed 11 months ago
请查看 3.1、基本使用 的最后一段
cacheExtent 这个值应该怎么设置会比较合理?因为会有用户翻历史消息,同时来了新消息的场景。如果用户翻的历史消息太多,最后也可能跳动。
设置合理的 cacheExtent
建议有两点:
cacheExtent
要能让你所参照的消息 item
被渲染出来,比如最大消息的高度(注:这个参照的 item
是相对的,不是绝对的,所以不存在说用户翻太多页导致没有参照而跳动)关于 item
是相对的说明,建议你看一下这篇 3、指定模式 的详细解释
你上面视频中是因为新增的最新消息 item
的高度太大,导致此时滚动视图(屏幕+缓存区)只渲染这一条,即列表中正在屏幕中展示和缓存区中未展示的所有 item
仅此一条,这样就没了参照 item
,自然该功能就失效了
很感谢你的回复,真的很及时。
目前来说只能增加 cacheExtent 到最大值,因为业务并不限制每一个 item 的高度,但是限制了每个聊天中的消息个数。
Content
从我的实验看来还是 Flutter 预测列表长度出现了问题。预测长度时通过选中的某个 item 的高度 * count 来计算整个列表的长度。
https://github.com/fluttercandies/flutter_scrollview_observer/assets/38153509/10a3370e-0f75-4687-aa08-5d0300333f1e