Показанный вами JSON не содержит списков. Вы подразумеваете, что при выборке нескольких пользователей этот код работает нормально, вероятно, потому, что jsonData["data"]
фактически возвращает List
, когда вы выбираете несколько.
Чтобы решить эту проблему, вы должны выполнить проверку типа, который jsonData["data"]
есть. Если это List
, то делайте то, что у вас сейчас есть, если нет, то обрабатываете его по-другому.
Пример
Future<List<UsersModel>> fetchUsersById(String uId) async {
String singleUser = CallApi.url+CallApi.sinleUser+uId;
Map<String,String> headers =
{ 'Accept' : 'application/json'};
var response = await http.get(singleUser ,headers:headers);
List<UsersModel> users= List<UsersModel>();
if(response.statusCode == 200){
var jsonData = jsonDecode(response.body);
var data = jsonData["data"];
//Handle data differently if it's a Map
if(data is Map) {
UsersModel user = UsersModel(
id:item["id"].toString(),
user_id:item["user_id"].toString(),
email:item["email"].toString(),
secondaryPhone:item["secondaryPhone"].toString(),
);
users.add(user);
return users;
}
//Otherwise, do what you currently have
for( var userr in data )
{
UsersModel user = UsersModel(
id:item["id"].toString(),
user_id:item["user_id"].toString(),
email:item["email"].toString(),
secondaryPhone:item["secondaryPhone"].toString(),
);
users.add(user);
}
}
return users;
}