如何使DropdownButtonFormField支持多行文本?

时间:2020-07-03 01:46:56

标签: flutter dart

A有一个DropdownButtonFormField,其中将长文本显示为项目之一。长文本能够在下拉菜单中多行显示。

drop down

但是,选择它之后,仅显示一行文本。第二行变为隐藏状态。 selected

String _selectedState = '';
List<String> _stateList = ['a very very long long long long long text'];

                DropdownButtonFormField<String>(
                  isExpanded: true,
                  value: _selectedState,
                  onChanged: (state) {
                   
                  },                     
                  items: _stateList
                      .map<DropdownMenuItem<String>>((String value) {
                    return DropdownMenuItem<String>(
                      value: value,
                      child: Text(value),
                    );
                  }).toList(),
                ),

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

overflow: TextOverflow.visible添加到您的代码中,如下所示:

 items: _stateList
        .map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
                value: value,
                child: Text(value,
                       overflow: TextOverflow.visible
                       ),
            );
  }).toList(),

答案 1 :(得分:0)

我不知道为什么这不是默认行为,但是如果您希望在所选项目上使用 TextOverflow.ellipsis 并且仍然希望在下拉菜单打开时显示完整文本,您可以使用 {{1 }}:

selectedItemBuilder

由于 flutters items: _stateList .map((value) => DropdownMenuItem<String>( value: value, child: Text(value), )) .toList(), selectedItemBuilder: (context) => _stateList .map((value) => Text(value, overflow: TextOverflow.ellipsis)) .toList(), weird,因为它总是切断完整的单词,您可能想用强制单行切换到 TextOverflow.ellipsis

TextOverflow.fade