基于API的json响应的颤振foreach循环

基于API的json响应的颤振foreach循环,json,flutter,dart,Json,Flutter,Dart,我已在以下模型中转换了JSON响应: VehicleList vehicleListFromJson(String str) => VehicleList.fromJson(json.decode(str)); String vehicleListToJson(VehicleList data) => json.encode(data.toJson()); class VehicleList { VehicleList({ this.vehicles, }

我已在以下模型中转换了JSON响应:

VehicleList vehicleListFromJson(String str) =>
    VehicleList.fromJson(json.decode(str));

String vehicleListToJson(VehicleList data) => json.encode(data.toJson());

class VehicleList {
  VehicleList({
    this.vehicles,
  });

  List<Vehicle> vehicles;

  factory VehicleList.fromJson(Map<String, dynamic> json) => VehicleList(
        vehicles: List<Vehicle>.from(
            json["vehicles"].map((x) => Vehicle.fromJson(x))),
      );

  Map<String, dynamic> toJson() => {
        "vehicles": List<dynamic>.from(vehicles.map((x) => x.toJson())),
      };
}

class Vehicle {
  Vehicle({
    this.vehid,
    this.vehname,
    this.vehdescrip,
    this.vehbodyopen,
    this.vehbodyopenimg,
    this.vehbodyclose,
    this.vehbodycloseimg,
  });

  String vehid;
  String vehname;
  String vehdescrip;
  String vehbodyopen;
  String vehbodyopenimg;
  String vehbodyclose;
  String vehbodycloseimg;

  factory Vehicle.fromJson(Map<String, dynamic> json) => Vehicle(
        vehid: json["vehid"],
        vehname: json["vehname"],
        vehdescrip: json["vehdescrip"],
        vehbodyopen: json["vehbodyopen"],
        vehbodyopenimg: json["vehbodyopenimg"],
        vehbodyclose: json["vehbodyclose"],
        vehbodycloseimg: json["vehbodycloseimg"],
      );

  Map<String, dynamic> toJson() => {
        "vehid": vehid,
        "vehname": vehname,
        "vehdescrip": vehdescrip,
        "vehbodyopen": vehbodyopen,
        "vehbodyopenimg": vehbodyopenimg,
        "vehbodyclose": vehbodyclose,
        "vehbodycloseimg": vehbodycloseimg,
      };
}
VehicleList vehicleListFromJson(字符串str)=>
fromJson(json.decode(str));
字符串vehicleListToJson(VehicleList数据)=>json.encode(data.toJson());
等级车辆列表{
车辆列表({
这辆车,
});
列出车辆清单;
factory VehicleList.fromJson(映射json)=>VehicleList(
车辆:列表。来源(
json[“车辆”].map((x)=>Vehicle.fromJson(x)),
);
映射到JSON()=>{
“车辆”:列表.from(车辆.map((x)=>x.toJson()),
};
}
等级车辆{
车辆({
这个,维希德,
这是威纳姆,
这是vehdescrip,
这个,维伯约蓬,
这是我的车,
这是我的车,
这是vehbodycloseimg,
});
维希德;
弦维那姆;
字符串vehdescrip;
弦波波德约蓬;
串维氏体;
弦式双环;
管柱振动;
factory Vehicle.fromJson(Map json)=>Vehicle(
vehid:json[“vehid”],
vehname:json[“vehname”],
vehdescrip:json[“vehdescrip”],
vehbodyopen:json[“vehbodyopen”],
vehbodyopenimg:json[“vehbodyopenimg”],
vehbodyclose:json[“vehbodyclose”],
vehbodycloseimg:json[“vehbodycloseimg”],
);
映射到JSON()=>{
“维希德”:维希德,
“vehname”:vehname,
“vehdescrip”:vehdescrip,
“vehbodyopen”:vehbodyopen,
“vehbodyopenimg”:vehbodyopenimg,
“vehbodyclose”:vehbodyclose,
“VehbodCycloseimg”:VehbodCycloseimg,
};
}
我这样进行API调用:

Future<VehicleList> getVehicles() async {
    var client = http.Client();
    var vehicleModel = null;

    try {
      var response = await client.get(Uri.parse(Strings.getVehiclesUrl));
      if (response.statusCode == 200) {
        var jsonString = response.body;
        var jsonMap = json.decode(jsonString);
        vehicleModel = VehicleList.fromJson(jsonMap);
      }
    } catch (Exception) {
      return vehicleModel;
    }
    return vehicleModel;
  }
Future getVehicles()异步{
var client=http.client();
var vehicleModel=null;
试一试{
var response=wait client.get(Uri.parse(Strings.getVehiclesUrl));
如果(response.statusCode==200){
var jsonString=response.body;
var jsonMap=json.decode(jsonString);
vehicleModel=VehicleList.fromJson(jsonMap);
}
}捕获(例外){
返回车辆模型;
}
返回车辆模型;
}
现在,我需要在此基础上实现for-each循环,以检查键“vehbodyopen”的值是“Y”还是“N”,并为它们创建单独的数组或对象,然后在ListViewBuilder小部件中显示它们

我是个新手。我来自javascript背景。我通过在json响应中执行每个循环并将它们存储在两个不同的数组中,解决了javascript中的问题。如果可能的话,我会在颤振和省道中寻找相同的解决方案。

for(int i=0;ifor (int i = 0; i < vehicleModel.length; i++) {
    if(vehicleModel[i].vehbodyopen == "Y"){
    //do stuff
    }else{
    //do another stuff
  }
}
if(车辆模型[i].vehbodyopen==“Y”){ //做事 }否则{ //做另一件事 } }
您可以试试这个

我找到了一个可能的解决方案,我不得不在车辆模型中循环查看车辆列表

List vehList = vehicleModel.vehicles;
            List openVehList = [];
            List closedVehList = [];
    
            for (var veh in vehList) {
              print('executing foreach');
              if (veh.vehbodyopen == "Y") {
                openVehList.add(veh);
              } else {
                closedVehList.add(veh);
              }
            }

嘿,谢谢你的建议,我尝试了你的解决方案,但我无法得到车辆模型的长度。因此for循环没有执行。车辆模型为VehicleList类型。感谢您的输入。我通过修改你的答案找到了解决办法。