Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Pra quem tiver com problema com intecpetor que não funciona...

Quem tiver assim como eu, com problema com código segue uma solução. Essa vai servir pra quem nem sequer conseguiu importar o Interceptor direito. Aquele problema que pede pra implementar 4 métodos que nem sequer tem na tela do professor. Se vc está tendo esse problema provavelmente tais usando dependências mais atuais do que a do curso. Se vc assim como eu não sabe consertar isso pra ficar igual segue a solução.

Já aviso que não ficará igual, apenas bem parecido.

o arquivo "http_interceptor.dart" ficou assim

import 'dart:async';

import 'package:http/http.dart';
import 'package:http_interceptor/models/interceptor_contract.dart';
import 'package:logger/logger.dart';

class LoggingInterceptor implements InterceptorContract{
  Logger logger = Logger();


  @override
  Future<BaseRequest> interceptRequest({required BaseRequest request}) async{
    logger.i("Requisição para: ${request.url}\nCabeçalhos: ${request.headers}\nMétodo: ${request.method}");
    return request;
  }

  @override
  Future<BaseResponse> interceptResponse({required BaseResponse response}) async{
    logger.i("Response Code: ${response.statusCode}\nRequisição feita para: ${response.request?.url}\nCabeçarios: ${response.request?.headers}\nMétodo: ${response.request?.method}");
    return response;
  }

  @override
  Future<bool> shouldInterceptRequest() async{
    return true;
  }

  @override
  Future<bool> shouldInterceptResponse() async {
    return true;
  }

}

o arquivo "journal_service.dart" assim (ATENTAR PRA POR SEU ENDEREÇO DE IP ALI)


import 'package:http/http.dart' as http;
import 'package:http_interceptor/http/intercepted_client.dart';
import 'package:meu_diario/services/http_interceptors.dart';


class JournalService{
  static const String url = "http://192.168.100.8:3000/";
  static const String resource = "learnhttp/";
  http.Client client = InterceptedClient.build(interceptors: [LoggingInterceptor()]);


  String getUrl(){
    return "$url$resource";
  }

  void register(String content) async{
    await client.post(Uri.parse(getUrl()),body: {"content": content});
  }

  Future<String> get() async{
    http.Response response = await client.get(Uri.parse(getUrl()));
    return response.body;
  }



}

Assim vai aparecer os logs que aparece pro professor com algumas diferenças pois o "data" que aqui ficou com nome de request e reesponse não possui todos os métodos apresentado no curso.

Não resolve, mas já serve pra vc seguir em frente

Não esqueça de baixar as dependerias

flutter pub add logger

flutter pub add http_interceptor

Ainda é necessário usar json-server na versão 0.17.4

https://cursos.alura.com.br/forum/topico-bug-nao-funciona-funcao-register-426721 (Olhar a resposta de Matheus)

mas basicamente é usar os comandos

npm unsintall -g json-server

npm install -g json-server@0.17.4

pra criar o servidor use a sintaxe

json-server -H seu.ip.aqui -p 3000 db.json

1 resposta
solução!

Oi Fernando, tudo bem?

Parabéns pela proatividade em vir compartilhar sua sugestão para solucionar esse problema aqui no fórum! Com certeza, será de grande ajuda para outros estudantes.

Agradecemos muito sua atitude! Em caso de dúvidas, conte com o apoio do fórum :)

Um forte abraço e bons estudos!