#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]);
}