Cod*_*rit 1 flutter dropdownbutton
如何在颤动中更改 DropdownButton 的高度。我曾尝试使用 Padding 和 SizedBox,但没有一个真正起作用。
SizedBox 只是增加了容器的大小,而 DropdownButton 被固定在左上角,因此不再居中。填充被忽略或将内容移到按钮之外。
我不想更改下拉叠加层的大小,而是更改按钮本身。
build(BuildContext context) {
return ThemeData(
data: ThemeData(canvasColor: Colors.white),
child: DropdownButton(
items: _items.map((item) => DropdownMenuItem(child: Text(item), value: item)).toList(),
isExpanded: true,
selectedItemBuilder: (_) {
return _items.map<Widget>((String lang) {
return Center(
widthFactor: 1,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Text(lang, style: TextStyle(color: Colors.black))
),
);
}).toList();
}
)
)
}
Run Code Online (Sandbox Code Playgroud)
小智 10
看起来 DropdownButton 类的“itemHeight”属性应该可以解决问题。我尝试了一下,它增加了 DropdownButton 的高度。
以下是我在之前的项目中使用 itemHeight 得到的一些示例代码:
DropdownButton<String>(
itemHeight: 100.0,
value: selectedCurrency,
items: dropdownItems,
onChanged: (value) {
setState(() {
selectedCurrency = value;
getData();
});
},
);
Run Code Online (Sandbox Code Playgroud)
注意:请确保您提供的值不小于 48.0,否则会出错。
文档:itemHeight 属性:https://api.flutter.dev/flutter/material/DropdownButton/itemHeight.html
“kMinInteractiveDimension”定义的最小 itemHeight: https: //api.flutter.dev/flutter/material/kMinInteractiveDimension-constant.html
小智 7
itemHeight: null,
Run Code Online (Sandbox Code Playgroud)
您只需将 itemHeight 保留为null值即可。
它将使 DropdownButton 的高度与菜单项的固有高度一致。
小智 6
使用 SizedBox 小部件
SizedBox(
height: 30,
child:DropdownButton<String>(
value: selectedCurrency,
items: dropdownItems,
onChanged: (value) {},
))
Run Code Online (Sandbox Code Playgroud)
小智 5
将其包裹在 a 中Container,根据您的需要给出高度和宽度,并isExpanded在DropDownButton. 还可以根据需要更改下拉按钮文本字体大小。
Container(
height: 50.0,
width: 200.0,
child: DropdownButton(
value: dropdownValue,
icon: Icon(Icons.arrow_downward),
iconSize: 24,
elevation: 16,
isExpanded: true,
style: TextStyle(color: Colors.deepPurple, fontSize: 20.0),
underline: Container(
height: 2,
color: Colors.deepPurpleAccent,
),
onChanged: (String newValue) {
setState(() {
dropdownValue = newValue;
});
},
items: <String>['One', 'Two', 'Free', 'Four']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
)
)
Run Code Online (Sandbox Code Playgroud)
最终产品应该看起来像这样,
您需要使用DropdownButton Widget 的menuMaxHeight属性。
child: DropdownButton(
menuMaxHeight: 500.0,
value: '1',
items: setTotalPages(),
onChanged: (String? newValue) {
setState(() {
dropdownvalue = newValue!;
});
},
)
Run Code Online (Sandbox Code Playgroud)