gpt4 book ai didi

flutter - 以 ListTile 作为子级的 Flutter 中 Card 小部件的高度不一致

转载 作者:IT王子 更新时间:2023-10-29 06:39:11 24 4
gpt4 key购买 nike

当我使用 Card 和 ListTile 作为其子项时,卡片的高度根据 ListTile 的字幕参数的文本行数而有所不同。如果标题和副标题是单行文本,则有某种顶部和底部填充(用绿色矩形突出显示)。但是,如果字幕由几行文本组成,则没有顶部和底部填充,并且卡片的高度较小。是什么导致了这种不一致?如何从卡片 1 和 2 中删除此填充或将其添加到卡片 3?

class CardList extends StatelessWidget {
List<List<String>> cardList = [
["Apple", "Fruit"],
["Book", "Thing"],
[
"Lorem ipsum",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vulputate tortor non mi gravida, nec"
]
];

@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: cardList.length,
itemBuilder: (BuildContext context, int position) {
return Card(
elevation: 2.0,
child: ListTile(
title: Text(cardList[position][0]),
subtitle: Text(cardList[position][1]),
));
});
}
}

screenshot of the problem

最佳答案

这就是 ListTile 开箱即用的方式,如果你愿意,你可以查看源代码,但别担心,这就是 Flutter,你可以很容易地创建和定制你自己的小部件.

class MyListTile extends StatelessWidget {
final String title;
final String subtitle;

const MyListTile({Key key, this.title, this.subtitle}) : super(key: key);

@override
Widget build(BuildContext context) {
final textTheme = Theme.of(context).textTheme;
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: textTheme.subhead,
),
subtitle != null
? Text(
subtitle,
style: textTheme.body1,
)
: const SizedBox.shrink()
],
),
);
}
}

用法

  @override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: cardList.length,
itemBuilder: (BuildContext context, int position) {
return Card(
elevation: 2.0,
child: MyListTile(
title: cardList[position][0],
subtitle: cardList[position][1],
),
);
});
}

结果

enter image description here

关于flutter - 以 ListTile 作为子级的 Flutter 中 Card 小部件的高度不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com