Muh*_*zan 16 android dart material-design dropdown flutter
我想在左侧添加图标,DropDownButton但找不到方法。我想要实现的是这样的:
我尝试了以下代码,但它将图标放在我不想要的位置,并且它也覆盖了箭头图标:
`@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
margin: EdgeInsets.only(top: 64.0, left: 16.0, right: 16.0),
color: Colors.white,
child: DropdownButton(
icon: Icon(
Icons.person,
color: Colors.redAccent,
size: 20.09,
),
isExpanded: true,
items: _studentList.map((val) {
return DropdownMenuItem(
value: val,
child: Text(val),
);
}).toList(),
value: _currentSelectedItem,
onChanged: (value) {
setState(() {
_currentSelectedItem = value;
});
},
),
),
);
}`
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是这样的:
我也尝试在小部件内部放置Icon()和放置,但这不允许扩展到全宽。DropDownButton()Row()DropDownButton()
任何帮助,将不胜感激。
谢谢
Zee*_*Ali 28
使用DropdownButtonFormField因为它具有装饰属性。您可以使用prefixIcon属性来设置左侧的图标。
例子:
DropdownButtonFormField<String>(
decoration: InputDecoration(
prefixIcon: Icon(Icons.person),
),
hint: Text('Please choose account type'),
items: <String>['A', 'B', 'C', 'D'].map((String value) {
return DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
onChanged: (_) {},
),
Run Code Online (Sandbox Code Playgroud)
结果:
小智 14
没有用于以您想要的方式添加图标的特定属性,但您始终可以解决您的代码并找到一些调整。使用以下代码将您Icon()置于DropDownButton()按钮之上。
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.grey,
blurRadius: 20.0,
spreadRadius: 0.5,
offset: Offset(1.0, 1.0),
),
],
),
padding: EdgeInsets.only(left: 44.0),
margin: EdgeInsets.only(top: 64.0, left: 16.0, right: 16.0),
child: DropdownButton(
isExpanded: true,
items: your_list.map(
(val) {
return DropdownMenuItem(
value: val,
child: Text(val),
);
},
).toList(),
value: _currentSelectedItem,
onChanged: (value) {
setState(() {
_currentSelectedItem = value;
});
},
),
),
Container(
margin: EdgeInsets.only(top: 80.0, left: 28.0),
child: Icon(
Icons.person,
color: Colors.redAccent,
size: 20.0,
),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
请记住,一切都是小部件,因此:
iconSize: 0,
hint: Row(
children: [
Container(
child: Text('Freguesias'),
),
Container(
child: Icon(Icons.arrow_drop_down),
),
],
),
Run Code Online (Sandbox Code Playgroud)