Ao habilitar o projeto para web recebi a mensagem no console do navegador informando que minha requisição nao continha os cabeçalhos de: 'Access-Control-Allow-Methods': '', 'Access-Control-Allow-Origin': '', 'Access-Control-Allow-Headers': '*'
Porem, adicionei os cabeçalhos utilizando maps. Desta forma:
Future<List<Transaction>> findAll() async {
final Client client = HttpClientWithInterceptor.build(
interceptors: [LoggingInterceptor()],
);
final Map<String,String> mapHeaders = {
'Access-Control-Allow-Methods': '*',
Future<List<Transaction>> findAll() async {
final Map<String, String> mapHeaders = {
'Access-Control-Allow-Methods': '*',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*'
};
final dynamic url = baseURL;
final Response response = await client
.get(url, headers: mapHeaders)
.timeout(Duration(seconds: 5));
final List<dynamic> decodedJson = jsonDecode(response.body);
return decodedJson
.map((dynamic json) => Transaction.fromJson(json))
.toList();
}
Funcionou! Porém a API disponibilizada no curso também não adicionou nos headers: Access-Control-Allow-Origin: *
Desta forma, no console do navegador exibe a seguinte mensagem:
:59184/#/:1 Access to XMLHttpRequest at 'http://172.100.10.92:8080/transactions' from origin 'http://localhost:59184' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Apenas um detalhe relevante aos que gostariam de testar o projeto na web.