Flutter 颤振下拉按钮的垂直实现
我需要一个垂直版本的下拉菜单按钮的颤振。而不是下降,我希望它“下降”与垂直轴列表,而不是一个水平的一个侧面。有没有一种方法可以通过下拉菜单按钮来实现这一点,或者有没有其他工具可以实现这一点 我使用了RotatedBox,但无法使列表旋转。我只能设法旋转选定的文本Flutter 颤振下拉按钮的垂直实现,flutter,drop-down-menu,vertical-scrolling,Flutter,Drop Down Menu,Vertical Scrolling,我需要一个垂直版本的下拉菜单按钮的颤振。而不是下降,我希望它“下降”与垂直轴列表,而不是一个水平的一个侧面。有没有一种方法可以通过下拉菜单按钮来实现这一点,或者有没有其他工具可以实现这一点 我使用了RotatedBox,但无法使列表旋转。我只能设法旋转选定的文本 class DropDownButton extends StatefulWidget { final Function(int)? valueReturned; //callback function DropDownBut
class DropDownButton extends StatefulWidget {
final Function(int)? valueReturned; //callback function
DropDownButton({Key? key, this.valueReturned}) : super(key: key);
@override
_DropDownButtonState createState() => _DropDownButtonState();
}
class _DropDownButtonState extends State<DropDownButton> {
List<ListItem> _dropdownItems = [
ListItem(1, "vertical text"),
ListItem(2, "vertical text")
];
List<DropdownMenuItem<ListItem>>? _dropdownMenuItems;
ListItem? _selectedItem;
void initState() {
super.initState();
_dropdownMenuItems = buildDropDownMenuItems(_dropdownItems);
_selectedItem = _dropdownMenuItems![0].value;
}
List<DropdownMenuItem<ListItem>> buildDropDownMenuItems(List listItems) {
List<DropdownMenuItem<ListItem>> items = [];
for (ListItem listItem in listItems as Iterable<ListItem>) {
items.add(
DropdownMenuItem(
child: Text(listItem.name, style: TextStyle(color: Colors.brown[50]),),
value: listItem,
),
);
}
return items;
}
@override
Widget build(BuildContext context) {
return Theme(
data: Theme.of(context).copyWith(
canvasColor: Colors.brown.shade300,
),
child:RotatedBox(
quarterTurns: 1,
child: DropdownButtonHideUnderline
(child: DropdownButton<ListItem>(
value: _selectedItem,
icon: Icon(Icons.arrow_drop_up),
items: _dropdownMenuItems,
onChanged: (value) {
setState(() {
_selectedItem = value;
// widget.valueReturned(_selectedItem.value);
}
);
bloc.updateNavigation(_selectedItem!.value);
}
)),
),
);
}
}
class ListItem {
int value;
String name;
ListItem(this.value, this.name);
}
class DropDownButton扩展StatefulWidget{
最终函数(int)?返回值;//回调函数
DropDownButton({Key?Key,this.valueReturned}):super(Key:Key);
@凌驾
_DropDownButtonState createState()=>\u DropDownButtonState();
}
类_DropDownButtonState扩展状态{
列表_下拉项=[
列表项(1,“垂直文本”),
列表项(2,“垂直文本”)
];
列表?\u下拉菜单项;
列表项?\u选择编辑项;
void initState(){
super.initState();
_dropdownMenuItems=构建dropdownMenuItems(\u dropdownItems);
_selectedItem=\u dropdownMenuItems![0]。值;
}
List buildDropDownMenuItems(列表项){
列表项=[];
for(listItems中的ListItem ListItem作为Iterable){
items.add(
下拉菜单项(
子项:文本(listItem.name,样式:TextStyle(颜色:Colors.brown[50]),),
值:listItem,
),
);
}
退货项目;
}
@凌驾
小部件构建(构建上下文){
返回主题(
数据:Theme.of(context).copyWith(
画布颜色:Colors.brown.shade300,
),
孩子:旋转盒子(
四分之一轮:1,
子项:DropdownButtonHideUnderline
(儿童:下拉按钮(
值:_selectedItem,
图标:图标(图标。箭头下拉),
项目:_下拉菜单项,
一旦更改:(值){
设置状态(){
_选择editem=值;
//返回的widget.value(\u selectedItem.value);
}
);
bloc.updateNavigation(_selectedItem!.value);
}
)),
),
);
}
}
类列表项{
int值;
字符串名;
ListItem(this.value,this.name);
}
请注意显示您的代码或您实现的内容