Flutter:BoxConstraints 强制无限高度,由 Row Widget 引起
Posted
技术标签:
【中文标题】Flutter:BoxConstraints 强制无限高度,由 Row Widget 引起【英文标题】:Flutter: BoxConstraints forces an infinite height, caused by Row Widget 【发布时间】:2020-04-09 19:40:12 【问题描述】:哦,这些 BoxConstraints 真是一场噩梦,请尽可能提高我的技能。
List<Chip> chipList = List.generate(toolsProvidedList.length, (index)
return Chip(
label: SizedBox(height: 20.0, child: Text(toolsProvidedList[index]) ),
);
);
toolsProvided = Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: chipList,
);
我尝试将我的chipList 的Text 子项包装在灵活、扩展的SizedBox 中,但这些都不起作用。您可以看到我在 Row 小部件上使用了 MainAxisSize.min。那是行不通的。
行需要有一个已知的高度,我该如何给它呢?我不知道那里可能有多少筹码,它们可能会越过那排,我希望,结束。
【问题讨论】:
【参考方案1】:我不太确定我是否不明白您需要什么...
但是试试这个看看是否有帮助
(删除您的 Row
小部件并将其替换为 Wrap
)
var toolsProvided = Container(
child: Wrap(
direction: Axis.horizontal,
children: chipList
));
添加图片或更好的描述会有所帮助。
【讨论】:
哦,谢谢@encubos,那就更好了。我的解决方案将一大堆底部填充物混入其中,HORRIBLE。所以 Wrap 小部件是您如何强制父小部件 WRAP 它的子小部件,PEEEERRRRFECT!我向你致敬!【参考方案2】:已解决!这是一个项目列表,因此直观地应该使用 ListView (doh)。但它再次抱怨Bounds。我认为 UI 可能是 Flutter 中最棘手的部分之一。
这是完整的修改和工作 sn-p。
Widget toolsProvided = Flexible( child: ListView(
children: List.generate(toolsProvidedList.length, (index)
return Chip(
label: SizedBox(height: 20.0, child: Text(toolsProvidedList[index]) ),
);
),
));
快乐的日子:)
【讨论】:
以上是关于Flutter:BoxConstraints 强制无限高度,由 Row Widget 引起的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 布局 - BoxConstraints:容器不会缩小到 maxWidth 以下
Flutter控件——布局控件:约束BoxConstraints