我无法将DropdownButton中的所选项目对准中心。
我尝试了DropdownMenuItem下的child:Center(),它能够对齐这些项目,但是在我选择了其中一项之后,所选项目立即与Left对齐。我还想将所选项目与中心对齐。
有人知道如何实现吗?
谢谢。
Unable to align selected item to Center
_dropdown值:
final List<String> _dropdownValues = [
"One",
"Two12345",
"Three123456789",
"Four",
];
String _selectedValue;
在小部件构建下:
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
child: Text('Name:',),
),
Container(
child: Center(
child: DropdownButton(
hint: Text('Select ...'),
items: _dropdownValues.map((value) => DropdownMenuItem(
child: Center( child: Text(value), ),
value: value,
)).toList(),
onChanged: (String value) {
setState(() {
this._selectedValue = value;
});
},
isExpanded: false,
value: _selectedValue,
),
),
),
],
),
),
答案 0 :(得分:4)
只需将 Center 作为父项添加到DropdownMenuItem的子项
DropdownButton(
items: genderList
.map((string) => DropdownMenuItem(
child: Center(
child: Text(
string,
style: Theme.of(context).textTheme.bodyText2,
),
),
))
.toList(),
onChanged: (value) { },
)
答案 1 :(得分:3)
答案 2 :(得分:2)
您现在可能不需要,但是如果有人想知道我如何找到以下解决方案。
DropdownButton(
hint: Align(alignment: Alignment.centerRight, child: Text('any text')),
...
items: _dropdownValues.map((item) {
return DropdownMenuItem(
child: new Align(alignment: Alignment.centerRight, child: Text(item)),
value: item,);
}).toList(),
)
答案 3 :(得分:0)
如果您不介意设置固定宽度,则可以将DropdownMenuItem
Text
的孩子包裹在SizedBox
中。然后,将textAlign
属性设置为TextAlign.center
,如下所示:
DropdownButton(
// ...
items: _dropdownValues.map((value) => DropdownMenuItem(
child: SizedBox(
width: 100.0, // for example
child: Text(value, textAlign: TextAlign.center),
),
value: value,
)).toList(),
// ...
),
答案 4 :(得分:-1)
这是预期的行为,根据此链接,菜单项的默认对齐方式是centerLeft:https://github.com/flutter/flutter/issues/3759
您可以在颤抖的Github页面上针对此功能提出新问题。