使用List.generate方法时如何显示List <DropDownItem <String >>? [flutter]

时间:2019-12-28 08:20:21

标签: flutter

我有一个DropDownButton小部件-

List<DropdownMenuItem<String>> dayValue;
String monthDay;

Widget buildDropdownButtonDay() {
 return new  DropdownButton<String>(
     hint: Text('Choose'),
     onChanged: (String changedValue) {
       monthDay=changedValue;
       setState(() {
         monthDay = changedValue;
//                  print(newValue);
       });
     },
     value: monthDay,
     items: dayValue
 );

}

我正在initState中使用List.generate方法来像这样向列表dayValue生成一些值-

 void initState() {
//    numberontroller.text = 1.toString();
   dayValue = List<DropdownMenuItem<String>>.generate(31, (int index) => DropdownMenuItem(child: Text("Day ${index + 1}"),));
   super.initState();
 }

当我单击dropDownButton时,将成功列出这些值,但是当我从该下拉列表中选择一个值时,value属性仍显示“ Day 1”。

当我们使用list.generate方法时,是否可以为DropDownButton小部件设置value属性提供一些建议?

2 个答案:

答案 0 :(得分:1)

Add the value property in DropdownMenuItem.

dayValue = List<DropdownMenuItem<String>>.generate(
    31,
    (int index) => DropdownMenuItem(
          value: "Day ${index + 1}", //added
          child: Text("Day ${index + 1}"),
        )).toList();
super.initState();

答案 1 :(得分:0)

您忘记给dropdownItem赋值,这就是为什么问题发生的原因,只是在生成Dropdown项目列表时放了value参数

dayValue = List<DropdownMenuItem<String>>.generate(31, (int index) => 
DropdownMenuItem(child: Text("Day ${index + 1}"),value:"Day ${index + 1}"));