【发布时间】:2019-05-17 22:43:16
【问题描述】:
在滚动视图中,我想显示一个小部件,然后是一个列表,然后是一个小部件。诸如此类的东西:
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Text("Top of ListView"),
ListView.builder(
itemCount: 100,
itemBuilder: (context, index) => Text('Line $index')),
Text("Below of ListView")
],
),
);
}
SingleChildScrollView 的内容在哪里:
Text("Top of ListView"),
Text('Line 0'),
Text('Line 1'),
...
Text('Line 98'),
Text('Line 99'),
Text("Bottom of ListView")
当然,这段代码不起作用,因为 ListView 的高度是未定义的。用Expanded 包裹ListView 不是解决方案,因为我希望Text("Top of ListView") 在我开始滚动时消失,Text("Bottom of ListView") 仅在到达底部时出现(好像它们是第一项和最后一项列表)。
我的想法:
- 将
Text("Top of ListView")和Text("Bottom of ListView")ListView内部:对于这个例子来说很容易做到,但在现实世界中,列表前面或后面不会只有一个小部件。凌乱且难以维护。 - 将列表项直接添加到
Column:也就是重新实现ListView。 - 将
ListView包装成Container,其高度对应于计算出的ListView高度:我不知道如何测量儿童。
有什么想法吗?
【问题讨论】:
标签: flutter dart flutter-layout