Flutter 将小部件正确放置在卡中
我正在尝试创建一个带有卡片小部件的ListView 我有ListView和卡,但我不知道如何将小部件正确地放置在卡本身中。这就是它现在的样子: 我希望收藏夹图标和图像保持其位置,但要将文本移动到图像附近,并使“Jean-Paul Gaultier”文本更靠近“Le Male”,并使其向左对齐 这就是我到目前为止所做的:Flutter 将小部件正确放置在卡中,flutter,Flutter,我正在尝试创建一个带有卡片小部件的ListView 我有ListView和卡,但我不知道如何将小部件正确地放置在卡本身中。这就是它现在的样子: 我希望收藏夹图标和图像保持其位置,但要将文本移动到图像附近,并使“Jean-Paul Gaultier”文本更靠近“Le Male”,并使其向左对齐 这就是我到目前为止所做的: Widget\u myListView(BuildContext上下文){ 返回ListView.builder( itemBuilder:(上下文,索引){ 回程卡( 孩子:
Widget\u myListView(BuildContext上下文){
返回ListView.builder(
itemBuilder:(上下文,索引){
回程卡(
孩子:排(
mainAxisSize:mainAxisSize.max,
mainAxisAlignment:mainAxisAlignment.spaceBetween,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
纵队(
儿童:[
填充物(
填充:常数边集全部(8.0),
子项:Image.network('${decoded[index]['Image']}'),
),
],
),
尺寸标注框(宽度:8,),
纵队(
儿童:[
正文(
“${decoded[index]['name']}”,
样式:TextStyle(
颜色:颜色。黑色87,
fontWeight:fontWeight.bold,
尺寸:14,
),
),
划船(
儿童:[
正文(
“${decoded[index]['brand']}”,
样式:TextStyle(
颜色:颜色。蓝灰色,
fontWeight:fontWeight.normal,
尺寸:12,
),
),
],
),
],
),
纵队(
mainAxisSize:mainAxisSize.min,
儿童:[
图标按钮(
图标:图标(图标。收藏夹边框),
),
],
),
],
),
);
},
);
}
如果没有mainAxisAlignment:mainAxisAlignment.
之间的空格,文本确实更接近图像,但收藏夹图标正好靠近文本,这是我不想要的
我试着搜索答案,但由于我不熟悉Flutter,我真的不知道正确的关键字,所以我什么也找不到。一个更简单的方法是使用
列表互动程序
Widget _myListView(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text("title"),
subtitle: Text("subtitle"),
leading: Container(
width: 48, height: 48,
child: Placeholder(), //place image here replacing the Placeholder widget
),
trailing: IconButton(
icon: Icon(Icons.favorite_border),
onPressed: () {},
),
),
);
},
);
}
这给了我们
但是如果你想要你的代码,那么它就在这里
Widget _myListView(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return Card(
child: Row(
children: <Widget>[
Container(
margin: const EdgeInsets.all(8.0),
child: Placeholder(),
width: 48,
height: 48,
),
SizedBox(
width: 8,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'title',
style: TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
fontSize: 14,
),
),
Text(
'subtitle',
style: TextStyle(
color: Colors.blueGrey,
fontWeight: FontWeight.normal,
fontSize: 12,
),
),
],
),
Spacer(),
IconButton(
icon: Icon(Icons.favorite_border),
onPressed: () {},
),
],
),
);
},
);
}
Widget\u myListView(构建上下文){
返回ListView.builder(
itemBuilder:(上下文,索引){
回程卡(
孩子:排(
儿童:[
容器(
边距:所有常数边集(8.0),
子:占位符(),
宽度:48,
身高:48,
),
大小盒子(
宽度:8,
),
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
“头衔”,
样式:TextStyle(
颜色:颜色。黑色87,
fontWeight:fontWeight.bold,
尺寸:14,
),
),
正文(
"副标题",,
样式:TextStyle(
颜色:颜色。蓝灰色,
fontWeight:fontWeight.normal,
尺寸:12,
),
),
],
),
垫片(),
图标按钮(
图标:图标(图标。收藏夹边框),
按下:(){},
),
],
),
);
},
);
}
编辑
要减少标题和副标题之间的间距,请使用以下代码替换标题
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text("title",style: Theme.of(context).textTheme.body2,),
Text("subtitle",style: Theme.of(context).textTheme.caption,),
],
),
标题:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
Text(“title”,style:Theme.of(context.textTheme.body2,),
文本(“字幕”,样式:Theme.of(context.textTheme.caption,),
],
),
一种更简单的方法是使用列表互动程序
Widget _myListView(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text("title"),
subtitle: Text("subtitle"),
leading: Container(
width: 48, height: 48,
child: Placeholder(), //place image here replacing the Placeholder widget
),
trailing: IconButton(
icon: Icon(Icons.favorite_border),
onPressed: () {},
),
),
);
},
);
}
这给了我们
但是如果你想要你的代码,那么它就在这里
Widget _myListView(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return Card(
child: Row(
children: <Widget>[
Container(
margin: const EdgeInsets.all(8.0),
child: Placeholder(),
width: 48,
height: 48,
),
SizedBox(
width: 8,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'title',
style: TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
fontSize: 14,
),
),
Text(
'subtitle',
style: TextStyle(
color: Colors.blueGrey,
fontWeight: FontWeight.normal,
fontSize: 12,
),
),
],
),
Spacer(),
IconButton(
icon: Icon(Icons.favorite_border),
onPressed: () {},
),
],
),
);
},
);
}
Widget\u myListView(构建上下文){
返回ListView.builder(
itemBuilder:(上下文,索引){
回程卡(
孩子:排(
儿童:[
容器(
边距:所有常数边集(8.0),
子:占位符(),
宽度:48,
身高:48,
),
大小盒子(
宽度:8,
),
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
“头衔”,
样式:TextStyle(
颜色:颜色。黑色87,
fontWeight:fontWeight.bold,
尺寸:14,
),
),
正文(
"副标题",,
样式:TextStyle(
颜色:颜色。蓝灰色,
fontWeight:fontWeight.normal,
尺寸:12,
),
),
],
),
垫片(),
图标按钮(
图标:图标(图标。收藏夹边框),
按下:(){},
),
],
),
);
},
);
}
编辑
要减少标题和副标题之间的间距,请使用以下代码替换标题
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text("title",style: Theme.of(context).textTheme.body2,),
Text("subtitle",style: Theme.of(context).textTheme.caption,),
],
),
标题:列(
crossAxisAlignment:CrossAxisA