现在我们了解了您想要实现的目标,可以使用 Stack 小部件、ListView 并使用 Align 小部件来定位包含要用作标题的小部件的容器:
Stack(
children: <Widget>[
ListView.builder(
itemCount: 20,
itemBuilder: (context, index) {
return Container(
child: Text('item $index'),
height: 40,
color: Colors.blueGrey,
margin: EdgeInsets.all(14),
);
}
),
Align(
alignment: Alignment.topCenter,
child: Container(
margin: EdgeInsets.only(top: 20),
alignment: Alignment.center,
height: 30,
width: 300,
color: Colors.blue,
child: Text('This is a title')
),
),
],
)
在最终了解用户想要什么之前的先前答案。
如果我正确理解了您的问题,并且您希望在视图中在顶部有一个固定的 Widget 并在其下方有一个可滚动项目的列表,那么带有 SliverAppBar 和 SliverList 的 CustomScrollView 将是您的解决方案。请看下面的例子:
CustomScrollView(
slivers: <Widget>[
SliverAppBar(
pinned: true,
title: Center(child: Text('Title')),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Container(
height: 40,
margin: EdgeInsets.all(10),
alignment: Alignment.center,
color: Colors.teal[100 * (index % 9)],
child: Text('grid item $index'),
);
},
childCount: 20
),
),
],
)
如果希望固定的 Widget 位于视图的底部,可以使用bottomNavigationBar
Scaffold 的属性:
Scaffold(
...
bottomNavigationBar: Container(
alignment: Alignment.center,
height: 50,
child: Text('title')
),
)