带有项目图像的抖动下拉菜单,无法更改所选的值

时间:2018-10-18 03:03:30

标签: dart flutter

我在项目上添加了一个DropdownMenuItem,每次单击一个项目时,它都试图更改它的值。但是它不起作用。有人遇到这种方法并成功了吗?

List<DropdownMenuItem<int>> listSearch = [];

listSearch.add(DropdownMenuItem(
  child:Center(child: Image.asset("assets/ring.png", height: 30.0,width: 30.0,)),
  value: 0,
));
listSearch.add(DropdownMenuItem(
  child:Center(child: Image.asset("assets/hoo.png", height: 30.0,width: 30.0,)),
  value: 0,
));
listSearch.add(DropdownMenuItem(
  child:Center(child: Image.asset("assets/lock.png", height: 30.0,width: 30.0,)),
  value: 0,
));

Widget dropdownSearch(){
int search = 0;
String dropValue;

return DropdownButton(
  items: listSearch,
  //hint: listSearch[search],
  value: dropValue,
  onChanged: (value) {
    print('Selected item : $value');

    search = value;
    switch(search){
      case 0:
        print('clicks ring $search');

        break;
      case 1:
        print('clicks hoo $search');
        break;
      case 2:
        print('click lock $search');
        break;

      default:
        break;
    }
  } ,
);

1 个答案:

答案 0 :(得分:1)

欢迎您!

  1. 请确保您的窗口小部件是StatefulWidget,而不是StatelessWidget。请仔细阅读https://flutter.io/tutorials/interactive/#creating-stateful-widget
  2. 变量dropValue应该是类属性,这是您的状态。
  3. 确保每个DropdownItem都具有不同的value集(例如1,2,3)。
  4. onChanged处理程序中,您将使用setState(() => dropValue = value);更新周围小部件的状态,而DropdownButton将显示所选的正确项目。