如何正确使用具有多个滚动位置的ScrollController?

时间:2019-09-09 12:45:40

标签: flutter

我正在处理一个由几个滚动小部件(列表视图和自定义小部件)组成的小部件。当我滚动任何这些列表视图时,也必须滚动自定义窗口小部件。为了清楚起见,自定义窗口小部件实际上不是滚动视图,而是有状态的窗口小部件,当列表视图的滚动位置更改时,该状态窗口小部件将更新其视口内容。

当前,我为每个列表使用滚动控制器,并通过对其他控制器调用jumpTo来使侦听器同步位置。但这似乎是实现我需要的笨拙方法。

ScrollController公开了控制多个位置的界面,因为在后台它的jumpTo方法仅对jumpTo列表中的每个ScrollPosition对象调用positions ,我希望有一种方法可以通过共享同一控制器来利用此方法来同步多个滚动视图。似乎我并不是唯一一个拥有相同想法(ScrollController attached to multiple scroll views)的人。但是我唯一能找到的建议是在每个滚动视图中都使用一个控制器。

很显然,我不完全了解如何在Flutter中使用滚动视图。所以我的问题如下。 positionsScrollController的目的是什么?它背后的设计决策是什么,以及如何正确使用它。

1 个答案:

答案 0 :(得分:0)

如果要对多个可滚动小部件(ListView,Gridview等)使用单个scrollController,则scrollController将每个ScrollView保存在Iterable中,因此,如果要{{1 }},您需要使用称为jumpTo的参数,类型为positions。 像这样的东西:

Iterable<ScrollPosition>