How to Handle API response model class if object is not Available in some situation on Same API Flutter Dart
690
I think problem is in null checking:
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"],
);
UPDATE
application: json["Application"] != null ? Application.fromJson(json["Application"]) : null, // **Because it can be null**
loan: json["Loan"] != nul ? Loan.fromJson(json["Loan"]) : null,
Sorry for previous answer, I forgot to check for null

Author by
Mustafa Shaikh
Updated on January 04, 2023Comments
-
Mustafa Shaikh 5 months
I need an Help for API response handling. I've created model class to convert API res. My issue is on Type the API response is changed for example
if type = '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" }
and If type = '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" }
In Data Class The Object will be changed based on type
Error log:
Unhandled Exception: type 'Null' is not a subtype of type 'Map<String, dynamic>'
Model 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, }; }
-
Mustafa Shaikh about 1 yearThank for your response but I'm getting error -> Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'bool'
-
MerdanDev about 1 yearI have updated, it must solve your problem
-
Mustafa Shaikh about 1 yearThanks brother issue has been solved..