DropdownButtonFormField

DropdownButtonFormField

flutter 的DropDownButton将自动缩小为所选最大标签的大小,如下所示:-

user-interface - 如何使DropdownButtonFormField占用尽可能小的空间?-LMLPHP

但是DropDownButtonFormField更改了此行为,而是占用了整个可用空间。

user-interface - 如何使DropdownButtonFormField占用尽可能小的空间?-LMLPHP

因此,如何使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的固定宽度需求。

07-24 09:35