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