Flutter 颤振下拉按钮的垂直实现

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

我需要一个垂直版本的下拉菜单按钮的颤振。而不是下降,我希望它“下降”与垂直轴列表,而不是一个水平的一个侧面。有没有一种方法可以通过下拉菜单按钮来实现这一点,或者有没有其他工具可以实现这一点

我使用了RotatedBox,但无法使列表旋转。我只能设法旋转选定的文本

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);
}

请注意显示您的代码或您实现的内容