繁体   English   中英

如何一次构建sliverlist的所有元素?

[英]How to Build All elements of sliverlist once?

我正在制作一个带有评论部分的屏幕,其中包含评论及其子评论。

我使用 ScopedModel 来管理屏幕的状态。

注释的数据在 List<-model-> 中,子注释的数据在 model->List<-model-> 中。 此数据在 ScopedModel 中。

我使用 SliverChildBuilderDelegate 构建了一个 sliverList,因此它只构建屏幕上的小部件。

每个评论 (current_comment) 都有一个回复按钮,在输入后,在 (current_comment)model-> List<-model-> 的末尾添加一个评论模型,并在 ScopedModel 上调用 notifyListener()

现在新添加的子评论有一个标记,将其标识为新评论。

我想要的是:

我希望屏幕滚动到新添加的子评论。

我试过的:

由于新添加的子评论可以通过标签标识,我在构建时向该评论小部件添加了一个 GlobalKey。 然后在构建完成后,我使用从 GlobalKey 添加的偏移量滚动到该位置。

我的问题 :

由于 SliverList 构建了仅对屏幕可见的元素,新添加的评论远低于父评论(因为回复评论按钮仅在父评论上)并且尚未构建。 所以构建器还没有将 GlobalKey 附加到它。

现在,我如何自动滚动到它?

由于密钥尚未附加到它,我如何找到它的位置并滚动到它?

建议我一种方法来一次构建 Sliverlist 的所有元素,以便键可以附加到元素或另一种策略,以便自动滚动到新添加的评论。

所以,在半年后,我提出了一个解决方案。

第一个解决方案是将shrinkWrap属性设置为true到列表视图,以便它一次呈现所有子项,因此将GlobalKey 分配给它。

第二种解决方案是改用一列,这将导致一次渲染所有子项。

当孩子太多时,这两种解决方案都不适合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM