typ „_InternalLinkedHashMap <String, dynamic>” nie jest podtypem typu „String”
Sep 29 2020
Jaki jest poprawny sposób rzutowania jsonciągu znaków na obiekt przed zapisaniem ich w lokalnej bazie danych?
To jest wynik dla i['created_by_user']:
{id: 3, name: A}
Próbuję rzucić to na CreatedByobiekt
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
Stworzone przez
@JsonSerializable()
class CreatedBy{
var name;
var id;
CreatedBy();
factory CreatedBy.fromJson(Map<String, dynamic> json) =>
_$CreatedByFromJson(json); Map<String, dynamic> toJson() => _$CreatedByToJson(this);
}
Tutaj moja lokalna kolumna tabeli
TextColumn get createdByUser =>
text().map(const CreatedBySqlConverter()).nullable()();
class CreatedBySqlConverter extends TypeConverter<CreatedBy, String> {
const CreatedBySqlConverter();
CreatedBy mapToDart(String fromDb) {
if (fromDb == null) return null;
return CreatedBy.fromJson(json.decode(fromDb));
}
String mapToSql(CreatedBy createdBy) => json.encode(createdBy.toJson());
}
Błąd
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
Odpowiedzi
1 Nonstapp Sep 29 2020 at 17:28
Jeśli w fromJson () potrzebujesz Map <String, dynamic> i danych wyjściowych
i['created_by_user'] //is a Map<String, dynamic>
Myślę, że nie musisz tego dekodować.
Proponuję wymienić
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
z
CreatedBy.fromJson(i['created_by_user']),