I have following Model
class ModelCompanies {
int id;
String companyid;
String companyName;
String name;
String activeStatus;
ModelCompanies(
{this.id, this.companyid, this.companyName, this.name, this.activeStatus});
ModelCompanies.fromJson(Map<String, dynamic> json) {
id = json['id'];
companyid = json['companyid'];
companyName = json['companyName'];
name = json['name'];
activeStatus = json['activeStatus'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['companyid'] = this.companyid;
data['companyName'] = this.companyName;
data['name'] = this.name;
data['activeStatus'] = this.activeStatus;
return data;
}
}
And I have following method
Future<ModelCompanies> fetchCompanies() async {
//encode Map to JSON
final response = await _dio.get(
globals.apiUrl + "get-companies",
options: buildCacheOptions(Duration(hours: _cachePriorityDurationHours),
forceRefresh: true,
maxStale: Duration(days: _networkPriorityDurationDays)));
if (response.statusCode == 200) {
return ModelCompanies.fromJson(response.data);
} else {
throw new Exception("Failed to load post.");
}
}
The JSON Format from API.
[
{
"id":123,
"companyid":"XYZ-123",
"companyName":"XYZ Corporation",
"name":"(XYZ) XYZ Corporation",
"activeStatus":"A"
},
{
"id":248,
"companyid":"PQR-248",
"companyName":"PQR Holdings Limited",
"name":"(PQR) PQR Holdings Limited",
"activeStatus":"A"
},
{
"id":397,
"companyid":"MNO-397",
"companyName":"MNO Adventures",
"name":"(MNO) Adventures",
"activeStatus":"A"
}
]
Problem
The line return ModelCompanies.fromJson(response.data); in method fetchCompanies gives error
List<dynamic> is not a subtype of type Map<String, dynamic>
I looked for other solutions for similar problem in SO, but cannot make them work (As I am fairly new to flutter and dart).
What I tried is
Map<String, dynamic> jsonResponse = response.data.map((item) {
return {
"id": item["id"],
"companyid": item["companyid"],
"companyName": item["companyName"],
"name": item["name"],
"activeStatus": item["activeStatus"]
};
}).toList();
return ModelCompanies.fromJson(jsonResponse );
But this too throwing same error.