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

时间:2019-07-27 18:39:32

标签: flutter dart flutter-sliver scoped-model

我正在创建一个带有注释部分的屏幕,其中包含注释及其子注释。

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

用于评论的数据在列表中<-model-> 对于子注释,则在model-> List <-model->内部。 这些数据在ScopedModel中。

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

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

现在,新添加的子注释具有一个将其标识为新注释的标签。

我想要的:

我希望屏幕滚动到新添加的子注释。

我尝试过的事情:

由于新添加的子注释可由标签标识,因此在构建该注释小部件时,我向其添加了GlobalKey。然后在构建完成后,使用从添加到GlobalKey的偏移量滚动到该位置。

我的问题:

由于SliverList生成仅在屏幕上可见的元素,因此新添加的注释远低于父注释(因为“答复注释”按钮仅在父注释上)并且尚未构建。因此构建器尚未将GlobalKey附加到它。

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

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

建议我一次构建Sliverlist的所有元素,以便将密钥附加到该元素上,或者采用另一种策略,以便自动滚动到新添加的评论。

0 个答案:

没有答案