代码之家  ›  专栏  ›  技术社区  ›  M.ArslanKhan

DropdownButton导致空项异常

  •  0
  • M.ArslanKhan  · 技术社区  · 5 年前

    DropdownButton导致空异常,因为我正在值名称参数中传递字符串变量。

      String diseases = "Select a disease";
    
    DropdownButton<String>(
        value: diseases,
        items: model.diseases
       .map((String value) {
        return DropdownMenuItem<
        String>(
        value: value,
        child: Text(value),
         );
         }).toList(),
         onChanged: (d) {
         setState(() {
         diseases = d;
         print(
         diseases.toString());
         });
         },
         )
    

    如果我使用数组中的第一个选定元素 ,作者 值:model.diseases[0] ,如果在更改模型后热重新加载,也可以正常工作。diseases[0]的值为“diseases”

    引发了以下断言 建筑商(脏):'包装:颤振/src/material/dropdown.dart': 断言失败:第608行位置15:“items==null | | items.isEmpty|| 值==空| |项。其中((DropdownMenuItem项)=>项。值 ==值)。长度==1':不是真的。

    应该在这个错误信息中提供更多的信息给 帮助您确定并修复根本原因。不管是哪种情况,
    https://github.com/flutter/flutter/issues/new?template=BUG.md

    1 回复  |  直到 5 年前
        1
  •  1
  •   dlohani    5 年前

    错误是因为您提供的默认值不存在于值列表中,如果您想在选择任何值之前在下拉菜单中显示标签,则将初始值设置为NULL,并使用DROPPDN菜单控件的提示属性。

        String diseases;
    
    DropdownButton<String>(
        hint: Text("Select a disease"),
        value: diseases,
        items: model.diseases
       .map((String value) {
        return DropdownMenuItem<
        String>(
        value: value,
        child: Text(value),
         );
         }).toList(),
         onChanged: (d) {
         setState(() {
         diseases = d;
         print(
         diseases.toString());
         });
         },
         )