Flutter ListView.builder创建无限滚动。如何设置它在内容结尾处停止?

use*_*752 3 listview builder flutter

我正在使用ListView.buildler将Widget分层为垂直滚动。这种方法的唯一问题是,当滚动到达我内容的结尾时。它会自动回到顶部。目前我有这个:

    new ListView.builder(
    scrollDirection: Axis.vertical,
    key: new Key(randomString(20)),
    reverse: false,
    primary: true,
    itemBuilder: (BuildContext context, int index) {
        return new Column(
        children: <Widget>[
            new Padding(
            padding: _bookPadding,
            child: new Container(
                width: 106.0,
                height: 162.0,
                child: new FadeInImage(
                    placeholder: new AssetImage('assets/loading.gif'),
                    image: this.book.cover)
            ),
            ),
            const Divider(),
            new Padding(
                padding: _bookPadding,
                child: new Text(
                    this.book.bookName,
                    style: getTextStyle())),
            const Divider(),
            new Padding(
            padding: _bookPadding,
            child: new Text(
                'By ' + this.book.author,
                style: getTextStyle(), ),
            ),
           ....
Run Code Online (Sandbox Code Playgroud)

到达终点时,是否可以将ListView.builder设置为no-wrap?

use*_*752 5

最终变得很容易。不知道我怎么从文档中错过它,我需要添加的只是Item count = non-null。就我而言,由于我是在列表视图构建器内部的单个Column小部件中构建所有内容,因此构建器的外观如下:

new ListView.builder(
    scrollDirection: Axis.vertical,
    key: new Key(randomString(20)),
    primary: true,
    itemCount: 1,
    itemBuilder: (BuildContext context, int index) {
        return new Column(
        children: <Widget>[ .....
Run Code Online (Sandbox Code Playgroud)

我确实想知道这种实现方式是否不好。当Column的每个子项变为可见时,ListView.Builder仍将呈现Component Column的每个嵌套子项吗?

从文档中:“创建按需创建的可滚动的线性小部件数组。此构造函数适用于具有大量(或无限)子代的列表视图,因为仅针对那些实际可见的子代调用此生成器。 ”

  • 你为什么把孩子们放在专栏中?将它们直接放入itembuilder对我来说更有意义。itembuilder的好处是它只构建所需的小部件,现在它构建了Column。专栏将立即建立其所有子级。另外,如果您的ListView仅包含1个项目,则可能需要SingleChildScrollView。您是否需要使用该列的任何内容? (2认同)