虽然我已经了解了颤动的列和行是如何工作的,但是我无法解决由一个 Image- 和两个 Textwidgets 组成的列中的以下底部溢出。
小部件排列在一个网格中,应该看起来像这样,但图像更大:
但是一旦我增加了图像圈的半径,我就会像这里一样得到底部溢出:
这是抛出错误的小部件的代码:
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(top: 5, bottom: 5),
color: Colors.transparent,
child: Column(children: [
InkWell(
child: CircleAvatar(
backgroundImage: CachedNetworkImageProvider(ingredient.imgSrc,
imageRenderMethodForWeb: ImageRenderMethodForWeb.HttpGet),
radius: 34,
),
onTap: widget.onTap,
),
Text(
ingredient.name,
style: TextStyle(color: textColor),
),
Text(
"g",
style: TextStyle(
color: textColor,
),
),
]));
}
这是包含图块的父网格小部件:
Card( margin: EdgeInsets.all(10),
child: new GridView.count(
// primary: true,
// padding: const EdgeInsets.all(0),
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
crossAxisCount: 3,
mainAxisSpacing: 3,
padding: EdgeInsets.all(2),
children: [
...getAllIngredientTiles(), // here I assign the widget list
Padding(
child: SizedBox(
width: 16,
height: 16,
child: ElevatedButton(
onPressed: _openAddIngredientScreen,
child: Icon(
Icons.add,
size: 36,
color: Colors.white,
),
style: ButtonStyle(
shape: MaterialStateProperty.all(CircleBorder()),
padding:
MaterialStateProperty.all(EdgeInsets.all(2)),
backgroundColor: MaterialStateProperty.all(
Colors.teal), // <-- Button color,
),
)),
padding: EdgeInsets.only(
left: 22, right: 22, bottom: 22, top: 0)),
//
],
))
我尝试了什么:
- 用 Container 包裹 Column 并手动设置高度
- 使用具有固定高度的 Containers/SizedBoxes 将每个小部件包装在 Column 内
- 用扩展包装
无论我做什么,我都不能让列增加它的高度并使元素适合它。
我阅读了很多其他相关问题,但答案对我不起作用。我将非常感谢任何允许我保留网格并增加图像大小而不会溢出的建议。