如何处理 API 响应模型 class 如果对象在某些情况下在相同 API Flutter Dart 上不可用

How to Handle API response model class if object is not Available in some situation on Same API Flutter Dart

我需要有关 API 响应处理的帮助。我创建了模型 class 来转换 API res。 我的问题是类型 API 响应已更改,例如

如果类型='Application'

 {
        "status": "success",
        "message": "Active loan Fetched",
        "data": {
            "Application": {
                "id": "",
                "coapp_status": null,
                "status": "pending-document",
                "approved_amount": "3000",
                "processing_fees": "450",
            },
            "type": "Application"
        },
        "timestamp": "2022-05-07 13:05:36",
        "require_update": "yes"
    }

并且如果类型 = 'Loan'

  {
        "status": "success",
        "message": "Loan Fetched",
        "data": {
            "Loan": {
                "id": "",
                "policy_id": "",
                "application_id": "",
                "user_id": "",
                "approved_amount": "8000",
                "disbursment_amount": "6552",
                "processing_fees": "1200",
                "interest_rate": "480",
                "pre_emi_interest": "31.5616",
                "totalAmount": 8480,
                "gst_processing_fees": 216,
                "totalDisbursment": 6552.4384,
                "current_emi_date": "10 Jun 22",
                "current_emi_amount": "5088",
                "current_emi_id": "51298",
                
                "viewid": "",
                "customermessage": "Your loan have been approved for Rs.8000"
            },
            "type": "Loan"
           
     
    }

在数据中Class对象将根据类型改变

错误日志:

Unhandled Exception: type 'Null' is not a subtype of type 'Map<String, dynamic>'

型号Class:

  Application? application;
  Loan? loan;
  String? type;
  String? sanctionLetter;

  factory Data.fromJson(Map<String?, dynamic> json) => Data(
        application: Application.fromJson(json["Application"]), => **Error if application not Found**
        loan: Loan.fromJson(json["Loan"]), **Error if Loan not found**
        type: json["type"],
        sanctionLetter: json["sanction_letter"],
      );

  Map<String?, dynamic> toJson() => {
        "Application": application!.toJson(),
        "Loan": loan!.toJson(),
        "type": type,
        "sanction_letter": sanctionLetter,
      };
}

我认为问题出在空检查中:

factory Data.fromJson(Map<String?, dynamic> json) => Data(
        application: json["Application"] ? Application.fromJson(json["Application"]) : null, // **Because it can be null**
        loan: json["Loan"] ? Loan.fromJson(json["Loan"]) : null, // **Because it can be null**
        type: json["type"],
        sanctionLetter: json["sanction_letter"],
      );

更新

application: json["Application"] != null ? Application.fromJson(json["Application"]) : null, // **Because it can be null**
loan: json["Loan"] != nul ? Loan.fromJson(json["Loan"]) : null,

抱歉之前的回答,我忘了检查空值