Тип аргумента «AsyncSnapshot» не может быть присвоен типу параметра » Карта»

#sql #json #flutter #sqlite #flutter-futurebuilder

Вопрос:

У меня был заводской метод преобразования json в объект, который принимал Map<String, dynamic> json<String, dynamic> в качестве аргумента из базы данных sqlite, как показано ниже

  factory Lecturer.fromJson(Map<String, dynamic> json)=>Lecturer(
    name:json['name'],
    email: json['email'],
  );
 

данные возвращаются в будущем построителе и получают такой доступ

           FutureBuilder(
              future: DB.getLecturer(),
              builder: (_,lect){
                if(!lect.hasData){
                  return CircularProgressIndicator();
                }
               Lecturer l=Lecturer.fromJson(lect.data[0]);
              }),
 

но после обновления мой флаттера до более новой версии я понял, что тип возвращаемого значения для SQL-запросов-это не Карта<String, dynamic=»»> но скорее карте<String, Object?=»»> Теперь я получаю ошибку ниже код, который работал отлично на прошлой неделе. Пожалуйста, любая помощь будет оценена по достоинству

 Error: The operator '[]' isn't defined for the class 'Object?'
 

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

1. Что вы делаете внутри DB.getLecturer() и почему не получаете Lecturer от будущего?

Ответ №1:

в конструкторе вы указываете тип lect как AsyncSnapshot:

       builder: (_, AsyncSnapshot lect){
        if(!lect.hasData){
          return CircularProgressIndicator();
        }               
           Lecturer l=Lecturer.fromJson(lect.data[0]);
          }