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

[ERROR:flutter/lib/ui/ui_dart_state.cc(199)]

Eu estou em dúvida com relação a esse erro.

Aqui vai uma print do código junto com o problema: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

import 'package:http/http.dart';
import 'package:http_interceptor/http_interceptor.dart';

class LoggingInterceptor implements InterceptorContract {
  @override
  Future<RequestData> interceptRequest({required RequestData data}) async {
    print("Request: ");
    print("url: ${data.url}");
    print("headers: ${data.headers}");
    print("body: ${data.body}");
    return data;
  }

  @override
  Future<ResponseData> interceptResponse({required ResponseData data}) async {
    print("Response: ");
    print("status code: ${data.statusCode}");
    print("headers: ${data.headers}");
    print("body: ${data.body}");
    return data;
  }
}

void findAll() async {
  final Client client = InterceptedClient.build(
    interceptors: [LoggingInterceptor()],
  );
  final Response response =
      await client.get(Uri.https("192.168.15.9", "transactions"));
      print(response);
}

Mudei pra https e está apresentando esse erro agora:

Performing hot restart...
Syncing files to device AOSP on IA Emulator...
Restarted application in 2.895ms.
I/flutter (30437): Request: 
I/flutter (30437): url: https://192.168.15.9/transactions
I/flutter (30437): headers: {}
I/flutter (30437): body: 
E/flutter (30437): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error: 
E/flutter (30437):     CERTIFICATE_VERIFY_FAILED: self signed certificate(handshake.cc:359))
E/flutter (30437): 
2 respostas
solução!

Fala Vinicius, tudo bom?

1. Versão rápida: Faltou a porta. Você tem que botar a porta que o Spring está rodando na sua máquina. A padrão seria 8080, se você não mudou nada, é essa. Ficaria algo assim:

Uri.http("192.168.15.9:8080", "transactions");

2. Versão longa: A partir da versão 0.13.0 a requisições deixaram de aceitar Strings para as URLs e passaram apenas aceitar esse objeto Uri. O curso foi gravado antes dessa versão, então o instrutor apenas passar uma string sendo a URL e pronto. Nós precisamos mandar esse objeto Uri.

Mas! Existe uma forma super simplificada de fazer essa conversão, que é a que eu uso, e recomendo:

Uri.parse("http://192.168.15.9:8080/transactions");

Se você quiser se aprofundar nos outros contrutores do Uri, recomendo fortemente essa documentação..


No mais, é isso! Espero ter ajudado, e qualquer coisa estou aqui! Abraço!

PS.: Não use o https, acredito que o Spring Boot que o instrutor criou não está preparado para requisições seguras.

Certo!! Muito obrigado mesmo. Nem percebi nesse detalhe!