Flutter 颤振下降按钮条件不工作

Flutter 颤振下降按钮条件不工作,flutter,dropdownbutton,Flutter,Dropdownbutton,我有一个值列表,可以用RESTAPI中的JSON解析成一个下拉按钮。值解析得很好,但我应用了一个条件,即当没有可显示的值列表时,它应该只在下拉列表上显示一个文本,表示“无设备”。但出于某种原因,这是行不通的 我的代码: List data = List(); Future<String> getSWData() async { setState(() { isLoading = true; }); var res = await http

我有一个值列表,可以用RESTAPI中的JSON解析成一个下拉按钮。值解析得很好,但我应用了一个条件,即当没有可显示的值列表时,它应该只在下拉列表上显示一个文本,表示“无设备”。但出于某种原因,这是行不通的

我的代码:

List data = List();
Future<String> getSWData() async {
    setState(() {
      isLoading = true;
    });
        var res = await http
            .get(Uri.encodeFull(url), headers: {"Accept": "application/json"});
        resBody = json.decode(res.body);

        setState(() {
          data = resBody;
          isLoading = false;
        });


        return "Sucess";

    }
    child: DropdownButton(
                          hint: new Text(
                            "Select Equipment",
                            style: style,
                          ),
                          style: style,
                          onChanged: (newVal) {
                            setState(() {
                              _mySelectionEquipment = newVal;
                            });
                          },
                          value: _mySelectionEquipment,
                          items: data.map((item) {
                            return new DropdownMenuItem(
                              child: Row(
                                children: <Widget>[
                                  Text(item['EquipmentMake'] ??
                                      "No Equipment Registered"),
                                  SizedBox(
                                    width: 5,
                                  ),
                                  SizedBox(
                                    width: 5,
                                  ),
                                  Text(item['EquipmentModel'] ?? ""),
                                ],
                              ),
                              value: item['EquipmentID'].toString(),
                            );
                          }).toList(),

                          isExpanded: false,
                        ),
List data=List();
Future getSWData()异步{
设置状态(){
isLoading=true;
});
var res=等待http
.get(Uri.encodeFull(url),头:{“接受”:“应用程序/json”});
resBody=json.decode(res.body);
设置状态(){
数据=resBody;
isLoading=false;
});
返回“成功”;
}
孩子:下拉按钮(
提示:新文本(
“选择设备”,
风格:风格,
),
风格:风格,
更改后:(newVal){
设置状态(){
_mySelectionEquipment=newVal;
});
},
值:_mySelectionEquipment,
条目:data.map((条目){
返回新的DropdownMenuItem(
孩子:排(
儿童:[
文本(项目['EquipmentMake']??
“无注册设备”),
大小盒子(
宽度:5,
),
大小盒子(
宽度:5,
),
文本(项目['EquipmentModel']??“”),
],
),
值:项['EquipmentID'].toString(),
);
}).toList(),
isExpanded:错,
),

您调用空列表上的映射

试着这样做:

  items: data.length > 0
                                ? data.map((item) {
                                    return new DropdownMenuItem(
                                      child: Row(
                                        children: <Widget>[
                                          Text(item['EquipmentMake'] ??
                                              "No Equipment Registered"),
                                          SizedBox(
                                            width: 5,
                                          ),
                                          SizedBox(
                                            width: 5,
                                          ),
                                          Text(item['EquipmentModel'] ?? ""),
                                        ],
                                      ),
                                      value: item['EquipmentID'].toString(),
                                    );
                                  }).toList()
                                : [
                                    DropdownMenuItem(
                                        child: Row(
                                          children: <Widget>[
                                            Text("No Equipment Registered"),
                                            SizedBox(
                                              width: 5,
                                            ),
                                            SizedBox(
                                              width: 5,
                                            ),
                                            Text(""),
                                          ],
                                        ),
                                        value: 0.toString())
                                  ],
项:data.length>0
? data.map((项){
返回新的DropdownMenuItem(
孩子:排(
儿童:[
文本(项目['EquipmentMake']??
“无注册设备”),
大小盒子(
宽度:5,
),
大小盒子(
宽度:5,
),
文本(项目['EquipmentModel']??“”),
],
),
值:项['EquipmentID'].toString(),
);
})托利斯先生()
: [
下拉菜单项(
孩子:排(
儿童:[
文本(“无注册设备”),
大小盒子(
宽度:5,
),
大小盒子(
宽度:5,
),
正文(“”),
],
),
值:0.toString())
],

您调用空列表上的映射

试着这样做:

  items: data.length > 0
                                ? data.map((item) {
                                    return new DropdownMenuItem(
                                      child: Row(
                                        children: <Widget>[
                                          Text(item['EquipmentMake'] ??
                                              "No Equipment Registered"),
                                          SizedBox(
                                            width: 5,
                                          ),
                                          SizedBox(
                                            width: 5,
                                          ),
                                          Text(item['EquipmentModel'] ?? ""),
                                        ],
                                      ),
                                      value: item['EquipmentID'].toString(),
                                    );
                                  }).toList()
                                : [
                                    DropdownMenuItem(
                                        child: Row(
                                          children: <Widget>[
                                            Text("No Equipment Registered"),
                                            SizedBox(
                                              width: 5,
                                            ),
                                            SizedBox(
                                              width: 5,
                                            ),
                                            Text(""),
                                          ],
                                        ),
                                        value: 0.toString())
                                  ],
项:data.length>0
? data.map((项){
返回新的DropdownMenuItem(
孩子:排(
儿童:[
文本(项目['EquipmentMake']??
“无注册设备”),
大小盒子(
宽度:5,
),
大小盒子(
宽度:5,
),
文本(项目['EquipmentModel']??“”),
],
),
值:项['EquipmentID'].toString(),
);
})托利斯先生()
: [
下拉菜单项(
孩子:排(
儿童:[
文本(“无注册设备”),
大小盒子(
宽度:5,
),
大小盒子(
宽度:5,
),
正文(“”),
],
),
值:0.0至