1
resposta

Timeout - TimeoutException

Boa tarde!

Quando executo o código utilizando um endereço de IP não valido, igual o professor fez no video, o meu timeout retorna o seguinte erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeTimeoutException (TimeoutException after 0:00:05.000000: Future not completed)

Alguem teve esse problema?

import 'dart:async';
import 'dart:convert';

import 'package:bytebank/models/contact.dart';
import 'package:bytebank/models/transaction.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_interceptor.dart';

class LoggingInterceptor implements InterceptorContract {
  @override
  Future<RequestData> interceptRequest({required RequestData data}) async {
    debugPrint('--> REQUEST');
    debugPrint('URL     : ${data.baseUrl}');
    debugPrint('HEADERS : ${data.headers}');
    debugPrint('BODY    : ${data.body}');
    return data;
  }

  @override
  Future<ResponseData> interceptResponse({required ResponseData data}) async {
    debugPrint('\n--> RESPONSE');
    debugPrint('STATUS CODE : ${data.statusCode}');
    debugPrint('HEADERS     : ${data.headers}');
    debugPrint('BODY        : ${data.body}');
    return data;
  }
}

Future<List<Transaction>> findAll() async {
  String url = 'http://19.168.70.102:8080/transactios';

  final Client client =
      InterceptedClient.build(interceptors: [LoggingInterceptor()]);

  final Response response =
      await client.get(Uri.parse(url)).timeout(const Duration(seconds: 5));

  final List<Transaction> transactions = [];

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

    for (Map<String, dynamic> element in decodedJson) {
      transactions.add(
        Transaction(
          element['value'],
          Contact(
            0,
            element['contact']['name'],
            element['contact']['accountNumber'],
          ),
        ),
      );
    }

    return transactions;
  }

  return transactions;
}
1 resposta

Olá, Thiago! Tudo bem?

Pelo que pude perceber, o erro que você está enfrentando é um TimeoutException, que ocorre quando a requisição ultrapassa o tempo limite definido. Esse erro é bastante comum quando o endereço IP utilizado não é válido, como você mencionou.

Uma possível solução para esse problema é verificar se o endereço IP está correto e se a porta utilizada está aberta para comunicação. Além disso, é importante garantir que o servidor esteja funcionando corretamente.

No seu código, você está utilizando o endereço IP 19.168.70.102 na URL. Verifique se esse é o endereço correto e se a porta 8080 está aberta para comunicação. Caso contrário, você pode substituir o endereço IP pelo endereço correto do servidor.

Outra dica é verificar se o servidor está respondendo corretamente às requisições. Você pode testar a URL no navegador ou utilizando alguma ferramenta de teste de API, como o Postman, para garantir que o servidor está funcionando corretamente.

Espero que essas dicas possam te ajudar a resolver o problema do TimeoutException. Se tiver mais alguma dúvida, é só me perguntar!

Espero ter ajudado e bons estudos!