Исключение: тип «Список» не является подтипом типа » Карта»

#flutter #dart

Вопрос:

Ниже приведен код, в котором я застрял. Это вызывает исключение, и я не могу его решить.

 import 'package:attendance_worklog/Events/eventSchedule.dart';
import 'package:attendance_worklog/login/loginModel.dart';
import 'package:http/http.dart' as http;

import 'eventScheduleModel.dart';

class EventScheduleService extends EventSchedule{
  LoginModel? data;
  EventScheduleService({required this.data}) : super(data: data);
  var url = Uri.parse('http://10.0.2.2:5001/naf-vip-server/us-central1/api/meets/');
  Future<List<EventScheduleModel>?> getSchedule() async{
    try{
      print("In Try");
      final response = await http.get(url,headers: {'Authorization': 'Bearer ${data!.token}'});
      if (response.statusCode == 200){
        print("In If");
        final List<EventScheduleModel> eventScheduleModel = eventScheduleModelFromJson(response.body) as List<EventScheduleModel>;
        print(eventScheduleModel);
        return eventScheduleModel;
      }else{
        print("0");
        return <EventScheduleModel>[];
      }
    }catch (e){
      print("0 excep");
      print(e);
      return <EventScheduleModel>[];
    }
  }
}
 

когда вызывается функция, выводится следующая:

 I/flutter (18763): In Try
I/flutter (18763): In If
I/flutter (18763): 0 excep
I/flutter (18763): type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'

 

это означает final List<EventScheduleModel> eventScheduleModel = eventScheduleModelFromJson(response.body) as List<EventScheduleModel>; , что у вас возникли какие-то проблемы.

Выбрасывание исключения как type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'

Пожалуйста, помогите, если кто-то знает решение.

Комментарии:

1. Привет Аян, можешь показать нам, каков ответ. как выглядит тело?

Ответ №1:

Используйте map response.body , потому response.body что есть List из Map<String, dynamic> .

 final List<EventScheduleModel> eventScheduleModel = (response.body as List)
    .map((e) => eventScheduleModelFromJson(e))
    .toList();