Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida em relação ao método save( )

Quero tirar a seguinte dúvida relacionado ao método save( ) implementado na videoaula: após os dados serem codificados para um Json (jsonEncode) e enviados para a Api ( usando .post() ), Porque esse mesmo Json tem que ser decodificado (jsonDecode) posteriormente?

Future<Transaction> save(Transaction transaction) async {
  final Map<String, dynamic> transactionMap = {
    'value': transaction.value,
    'contact': {
      'name': transaction.contact.name,
      'account_number': transaction.contact.accountNumber,
    }
  };
  final String transactionJson = jsonEncode(transactionMap);

  final Response response = await client.post(baseUrl,
      headers: {'Content-type': 'application/json', 'password': '1000'},
      body: transactionJson);
  Map<String, dynamic> json = jsonDecode(response.body);
  final Map<String, dynamic> contactJson = json['contact'];
  return Transaction(
    json['value'],
    Contact(
      0,
      contactJson['name'],
      contactJson['accountNumber'],
    ),
  );
}
2 respostas

Olá, acredito que seja porque o retorno da requisição é uma "string json" (response.body) e a função save retorna uma Transaction, desta forma o decode é justamente para auxiliar na conversão de string json para um objeto Transaction.

solução!

Olá! Então, para a funcionalidade de save utilizando o método post() em si, esse decode do json posteriormente não é necessário, pois, como você disse, os dados já são enviados para a api dentro do método post(). Portanto, essa função poderia ser até mesmo do tipo void.

O que acontece é que, o professor, para fins didáticos e demonstrativos, fez com que esta função retornasse um objeto Transaction para que ele pudesse utilizá-lo para fazer o print( ) para demonstrar que a função está funcionando corretamente e retornando os valores esperados. (pelo menos a minha interpretação foi essa).

Ou seja, esse decode aí não interfere em nada no processo principal da função, que é o de salvar na API. É apenas para facilitar uma demonstração =D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software