1
resposta

Flutter: recuperar Json de uma entidade que é relacionamento de outra

Tenho duas classes: Associado e Dependentes.

Fiz uma API Rest que retorna o associado e seus dependentes, pelo código do associado.

Ao recuperar o Json, são recuperados os dados certos, mas depois recebo um erro:

E/flutter (32587): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null. E/flutter (32587): Receiver: null E/flutter (32587): Tried calling:

E erro aponta para minha classe de modelo dependente.dart.

Seguem os métodos de serialização das minhas classes de modelo:

Associado.fromJson(Map<String, dynamic> json) : codigo = json['codigo'], nome = json['nome'], dependente = Dependente.fromJson(json['dependente']);

Map<String, dynamic> toJson() => { 'codigo': codigo, 'nome': nome, 'dependente': dependente.toJson(), };

Dependente.fromJson(Map<String, dynamic> json) : codigo = json['codigo'], nome = json['nome'];

Map<String, dynamic> toJson() => { 'codigo': codigo, 'nome': nome, };

Alguma dica do que pode estar errado??

Obg.

1 resposta

Olá Adalberto, tudo bem com você?

Antes de mais nada peço perdão pela demora, eu fiquei longe um pouco do fórum na semana passada auxiliando em outros projetos da Alura

Observando seu código, não vejo nada de errado, eu só tenho uma dúvida, essa parte de dependentes há como vir nulo ?

Se a resposta for sim, acredito que foi essa a razão do erro, em algum momento tentar fazer o Dependente.fromJson de algo nulo traria um erro

O ideal seria fazer algo como:

dependente = json['dependente') != null 
? Dependente.fromJson(json['dependente'])
: null;

Uma dica, caso não conheça, existe um site: JSON to Dart onde você copia o retorno da sua API, e consegue gerar a classe com todo processo de serialização e desserialização para ti, o que pode auxiliar um pouco nesse processo :)

Abraços e Bons Estudos