【发布时间】:2018-04-01 21:15:51
【问题描述】:
我正在尝试创建一个可以在滚动列表底部有页脚的滚动列表。如果列表没有填满所有的垂直屏幕空间,页脚将需要向下移动到页面底部。
我尝试在CustomScrollView 中使用SliverList 和SliverFillRemaining 来实现这一点,但我相信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,
),
)
],
)
【问题讨论】:
-
来自 SliverFillRemaining 的文档 - “一个包含单个框子的条子,填充视口中的剩余空间”和“除了这个条子之外,永远没有任何空间。”这似乎完全在意料之中。
-
@JonahWilliams 尽管
SliverFillRemaining之后没有其他小部件。另外,我想我误解了“包含一个填充视口中剩余空间的单个盒子子元素的条子”。你能澄清一下吗? -
我遇到了同样的问题。有一个
SliverList后跟一个SliverFillRemaining,在CustomScrollView中包含一个小部件,我希望滚动视图不会滚动,因为所有内容都适合屏幕。我注意到SliverFillRemaining的hasScrollBody参数默认为true,但我的内容不会滚动。所以我把它切换到false,这解决了我的问题。没有深入挖掘。 -
谢谢@t.animal。对我有用。