一尘不染

(flutter)无限滚动`ListView.builder`具有有限的内容

flutter

1.问题

如何使我ListView.builder能够滚动到顶部和底部的空白区域?

例如,我有自定义部件的清单,我想用户能够获得名单上的顶级显卡-这是在屏幕的顶部-滚动到更接近他的拇指,而Flutter呈现顶部空间有空的背景。

2.到目前为止我尝试过的

我的代码的基本形状是ListView.builder构造函数的基本实现:

ListView.builder(
  itemCount: widgetsList.length,
  itemBuilder: (context, index){
    return widgetsList[index];
  },
),

到目前为止,我尝试摆弄的一些ListView.builder属性以及一些解决方法:

  1. 起初,我以为,要么shrinkWrap: truephysics: AlwaysScrollableScrollPhysics()-也许我需要设置parent的参数AlwaysScrollableScrollPhysics()?-可以胜任,但似乎都没有。
  2. 我还尝试通过Container在列表的顶部和底部创建空s,并添加类似的内容dragStartBehavior: DragStartBehavior.values[1](我不认为这.values实际上是您使用该属性的方式)使列表从第二个开始,来人为地做到这一点。价值,但没有用。

阅读 260

收藏
2020-08-13

共1个答案

一尘不染

您可以通过“
Container解决方法”来实现。您可以使用ScrollController,并使其initialScrollOffset顶端位于顶部Container。这是我后来才通过另一个StackOverflow问题发现的。

  1. ScrollController在小部件的类中声明您的内容。
        ScrollController scrollController = ScrollController(
      initialScrollOffset: 10, // or whatever offset you wish
      keepScrollOffset: true,
    );
  1. 将控制器添加到您的 ListView
        ListView.builder(
      controller: scrollController,
      itemCount: widgetsList.length,
      itemBuilder: (context, index){
        return widgetsList[index];
      },
    ),

此外,您甚至可能想为背景滚动动作创建动画。这可以通过使用.animateTo小部件的中的方法来实现initState

2020-08-13