如何在Flatter中的ListView顶部添加标题?
我有一个列表视图,在一个容器中滚动,有7个平铺。我想在列表视图顶部添加标题“设置”,即使在列表视图滚动时,该标题也必须保留在列表视图顶部。如何在Flatter中的ListView顶部添加标题?,listview,flutter,dart,Listview,Flutter,Dart,我有一个列表视图,在一个容器中滚动,有7个平铺。我想在列表视图顶部添加标题“设置”,即使在列表视图滚动时,该标题也必须保留在列表视图顶部。 当我添加它时,列表正在滚动,但在标题后面。这使得列表视图项很难读取。有没有更好的方法添加此标题 这是我在容器内的listView的代码,具有圆角边缘: Padding( padding: const EdgeInsets.only(top: 408.0, left: 8, right: 8), chil
当我添加它时,列表正在滚动,但在标题后面。这使得列表视图项很难读取。有没有更好的方法添加此标题 这是我在容器内的listView的代码,具有圆角边缘:
Padding(
padding: const EdgeInsets.only(top: 408.0, left: 8, right: 8),
child: Container(
width: double.infinity,
height: 590,
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.vertical(top: Radius.circular(34)),
),
child: Stack(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(left: 12.0, top: 10),
child: ListView.builder(
primary: false,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 7,
itemBuilder: (BuildContext context, int index) {
IconData icon;
if (index == 0) {
icon = Entypo.phone;
} else if (index == 1) {
icon = Entypo.help;
} else if (index == 2) {
icon = Entypo.email;
} else if (index == 3) {
icon = Entypo.star;
} else if (index == 4) {
icon = Entypo.share;
} else if (index == 5) {
icon = Entypo.info;
} else if (index == 6) {
icon = Entypo.log_out;
} else if (index == 7) {
icon = Entypo.log_out;
}
return new GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () => {_onTileClicked(index)},
child: SettingsCard(
title: settingsAry[index]['title'],
description: settingsAry[index]['description'],
index: index,
iconData: icon,
),
);
},
),
),
Row(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 10.0, left: 20),
child: Text(
'Settings',
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 23),
),
)
],
)
],
),
),
)
填充(
填充:仅限常量边集(顶部:408.0,左侧:8,右侧:8),
子:容器(
宽度:double.infinity,
身高:590,
页边距:仅限边缘集(顶部:15),
装饰:盒子装饰(
颜色:颜色,白色,
边界半径:边界半径。垂直(顶部:半径。圆形(34)),
),
子:堆栈(
儿童:[
填充物(
填充:仅限常量边集(左:12.0,顶部:10),
子项:ListView.builder(
主要:错误,
滚动方向:轴垂直,
收缩膜:对,
物品计数:7,
itemBuilder:(构建上下文,int索引){
Iconda图标;
如果(索引==0){
icon=Entypo.phone;
}else if(索引==1){
icon=Entypo.help;
}else if(索引==2){
icon=Entypo.email;
}否则如果(索引==3){
icon=Entypo.star;
}else if(索引==4){
icon=Entypo.share;
}否则,如果(索引==5){
icon=Entypo.info;
}否则如果(索引==6){
icon=Entypo.log\u out;
}否则如果(索引==7){
icon=Entypo.log\u out;
}
返回新的手势检测器(
行为:HitTestBehavior.transparent,
onTap:()=>{u onTileClicked(index)},
孩子:赛汀斯卡德(
标题:设置[索引][“标题”],
description:settingsAry[索引]['description'],
索引:索引,,
Iconda:图标,
),
);
},
),
),
划船(
儿童:[
填充物(
填充:仅限常量边集(顶部:10.0,左侧:20),
子:文本(
“设置”,
样式:TextStyle(
fontWeight:fontWeight.bold,fontSize:23),
),
)
],
)
],
),
),
)
您需要将它们放在一列中:首先是标题,然后是一个展开的
,子视图是列表视图。这应该做到:
Padding(
padding: const EdgeInsets.only(top: 408.0, left: 8, right: 8),
child: Container(
width: double.infinity,
height: 590,
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.vertical(top: Radius.circular(34)),
),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 10.0, left: 20),
child: Text(
'Settings',
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 23),
),
)
],
)
Expanded(
child: ListView.builder(
primary: false,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 7,
itemBuilder: (BuildContext context, int index) {
IconData icon;
if (index == 0) {
icon = Entypo.phone;
} else if (index == 1) {
icon = Entypo.help;
} else if (index == 2) {
icon = Entypo.email;
} else if (index == 3) {
icon = Entypo.star;
} else if (index == 4) {
icon = Entypo.share;
} else if (index == 5) {
icon = Entypo.info;
} else if (index == 6) {
icon = Entypo.log_out;
} else if (index == 7) {
icon = Entypo.log_out;
}
return new GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () => {_onTileClicked(index)},
child: SettingsCard(
title: settingsAry[index]['title'],
description: settingsAry[index]['description'],
index: index,
iconData: icon,
),
);
},
),
),
],
),
),
)
填充(
填充:仅限常量边集(顶部:408.0,左侧:8,右侧:8),
子:容器(
宽度:double.infinity,
身高:590,
页边距:仅限边缘集(顶部:15),
装饰:盒子装饰(
颜色:颜色,白色,
边界半径:边界半径。垂直(顶部:半径。圆形(34)),
),
子:列(
儿童:[
划船(
儿童:[
填充物(
填充:仅限常量边集(顶部:10.0,左侧:20),
子:文本(
“设置”,
样式:TextStyle(
fontWeight:fontWeight.bold,fontSize:23),
),
)
],
)
扩大(
子项:ListView.builder(
主要:错误,
滚动方向:轴垂直,
收缩膜:对,
物品计数:7,
itemBuilder:(构建上下文,int索引){
Iconda图标;
如果(索引==0){
icon=Entypo.phone;
}else if(索引==1){
icon=Entypo.help;
}else if(索引==2){
icon=Entypo.email;
}否则如果(索引==3){
icon=Entypo.star;
}else if(索引==4){
icon=Entypo.share;
}否则,如果(索引==5){
icon=Entypo.info;
}否则如果(索引==6){
icon=Entypo.log\u out;
}否则如果(索引==7){
icon=Entypo.log\u out;
}
返回新的手势检测器(
行为:HitTestBehavior.transparent,
onTap:()=>{u onTileClicked(index)},
孩子:赛汀斯卡德(
标题:设置[索引][“标题”],
description:settingsAry[索引]['description'],
索引:索引,,
Iconda:图标,
),