我正在尝试创建一个滚动列表,该列表可以在滚动列表的底部具有页脚。如果列表没有填满所有垂直屏幕空间,则页脚将需要向下移动到页面底部。

我尝试用SliverList中的SliverFillRemainingCustomScrollView实现此功能,但是SliverFillRemaining显示了一些我相信的意外行为。它填满了多余的空间(请参阅gif)。

我使用以下代码创建了此列表:

child: new CustomScrollView(
  slivers: <Widget>[
    new SliverList(
      delegate: new SliverChildBuilderDelegate(
        (BuildContext context, int index) {
          return new Card(
            child: new Container(
              padding: new EdgeInsets.all(20.0),
              child: new Center(child: new Text("Card $index")),
            ),
          );
        },
        childCount: 3,
      ),
    ),
    new SliverPadding(
      padding: new EdgeInsets.all(5.0),
    ),
    new SliverFillRemaining(
      child: new Container(
        color: Colors.red,
      ),
    )
  ],
)

dart - 将SliverFillRemaining与CustomScrollView和SliverList一起使用-LMLPHP

最佳答案

SliverFillRemaining会自动调整自身大小以填充最后一个列表项的底部和视口(viewport)底部之间的空间。有关代码,请参见performLayoutSliverFillRemaining方法:

https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/sliver_fill.dart#L118

我不认为您可以使用它来达到想要的效果,尽管您可能能够创建一个有效的子类。

10-08 17:31