flutter 的DropDownButton
将自动缩小为所选最大标签的大小,如下所示:-
但是DropDownButtonFormField
更改了此行为,而是占用了整个可用空间。
因此,如何使DropDownButtonFormField
模仿DropDownButton
的空间占用行为?
最佳答案
我在尝试使DropDownButtonFormField
适合Row
中的最小空间时遇到类似的问题。不幸的是,在InputDecorator
中使用的DropDownButtonFormField
小部件不支持可以设置自己宽度的子级(例如DropDownButton
),并要求maxWidth
由父级设置上限。
我设法使用IntrinsicWidth小部件使其工作(警告:根据文档,此小部件相对昂贵,因为它在最后的布局阶段之前添加了推测性的布局传递):
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
IntrinsicWidth(
child: DropdownButtonFormField<String>(
value: "1",
items: [
DropdownMenuItem(
value: "1",
child: Text("1"),
),
DropdownMenuItem(
value: "2",
child: Text("2"),
),
],
onChanged: _onCurrencyChanged,
)),
],
)
IntrinsicWidth
将子级的宽度设置为子级的最大内部宽度,满足InputDecorator
的固定宽度需求。