TextFormField中的Flutter DropdownButton作为前缀

时间:2019-10-16 15:27:35

标签: flutter

按照标题,我想在DropdownButton内添加TextFormField(或prefix?)中的prefixIcon。文本字段用于金额,下拉列表用于其货币。

我的直截了当的方法在视觉上有效,但是我无法点击下拉列表来显示列表。每次我点击它,它都会显示(并立即隐藏)文本字段本身的键盘。

如何做到?

TextFormField(
    initialValue: '10.00',
    decoration: InputDecoration(
        prefix: DropdownButtonHideUnderline(
            child: DropdownButton(
                items: CURRENCY_CODES,
                onChanged: _onCurrencyChanged,
                value: _currency,
            ),
        ),
    ),
),

1 个答案:

答案 0 :(得分:1)

问题

当您点击Widget中包含的prefix时,TextFormField将聚焦并出现键盘。但是由于WidgetDropdownButton,因此在显示DropdownItems时,键盘被关闭了,奇怪的是,DropdownItems也被关闭了。

如果尝试使用PopupMenuButton而不是DropdownButton,则会发生类似的情况:先显示键盘,然后将其关闭,但在这种情况下,不会关闭PopupMenuItems。为此,我可以使用焦点侦听器和标志来解决,但这不是很好。


解决方案

采用另一种方法,一种方法是将Container与所需的装饰一起使用,将包含Row / DropdownButton和{{ 1}}。


实施

如果您使用PopupMenuButton,则将焦点放在TextFormField上,然后点击DropdownButton时,键盘将被关闭,而TextFormField也被关闭了。这是一个未解决的问题:DropdownButton bad behaviour when tapped and keyboard is showing

如果您使用DropdownButton,则可以执行以下操作:

DropdownItems