1
resposta

TypeError (type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>

Fui fazer a simulação de erro na URL, conforme visto no curso, alterei a url para um serviço inexistente:

final Response response =
      await client.get(Uri.parse('http://192.168.0.3:8080/transactions-outro'));

Ao rodar o app tive o erro no decode:

final List<dynamic> decodedJson = jsonDecode(response.body);
Exception has occurred.
_TypeError (type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>')

Como fazer o tratamento disso?

1 resposta

Isto é porque você não alterou o endereço do servidor e sim o método chamado. Se verificar o responder verá que está recebendo um erro 404 (coloque http://192.168.0.3:8080/transactions-outro no navegador) mas relacionado ao método e não ao servidor.

você pode checar o status do response do mesmo modo que foi feito no save():

 if (response.statusCode == 200) {
      final List<dynamic> decodedJson = jsonDecode(response.body);

      return decodedJson
          .map((dynamic json) => Transaction.fromJson(json))
          .toList();
    }
    throw HttpException(_getMessage(response.statusCode));