o tipo '_InternalLinkedHashMap <String, dynamic>' não é um subtipo do tipo 'String'
Sep 29 2020
Qual é a maneira correta de converter jsonstring para objeto antes de armazenar no banco de dados local?
Esta é a saída para i['created_by_user']:
{id: 3, name: A}
Estou tentando lançá-lo para CreatedByobjeto
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
Criado por
@JsonSerializable()
class CreatedBy{
var name;
var id;
CreatedBy();
factory CreatedBy.fromJson(Map<String, dynamic> json) =>
_$CreatedByFromJson(json); Map<String, dynamic> toJson() => _$CreatedByToJson(this);
}
Aqui minha coluna da tabela local
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());
}
Erro
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
Respostas
1 Nonstapp Sep 29 2020 at 17:28
Se em fromJson () você precisa de um Map <String, dynamic> e a saída de
i['created_by_user'] //is a Map<String, dynamic>
Acho que você não precisa decodificá-lo.
Eu sugeriria que você substituísse
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
com
CreatedBy.fromJson(i['created_by_user']),
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?