Olá! Entendo que esteja com dificuldades com a exibição de caracteres especiais no Flutter ao receber mensagens de erro da sua API Spring Boot.
Este problema geralmente ocorre devido a uma incompatibilidade de codificação de caracteres entre a API e o cliente (neste caso, o Flutter). A API Spring Boot pode estar enviando a resposta em uma codificação (como ISO-8859-1) enquanto o Flutter está tentando decodificar a resposta em outra codificação (como UTF-8).
Uma solução possível é garantir que ambas as partes estejam usando a mesma codificação. No seu caso, você pode tentar configurar a API Spring Boot para usar UTF-8, que é uma codificação comum para a web e suporta uma ampla gama de caracteres.
No Spring Boot, você pode configurar a codificação de caracteres da seguinte forma:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setWriteAcceptCharset(false);
stringConverter.setDefaultCharset(StandardCharsets.UTF_8);
converters.add(0, stringConverter);
}
}
Este código define o codificador de caracteres padrão para UTF-8.
No lado do Flutter, você pode usar o pacote 'dart:convert' para decodificar a resposta:
import 'dart:convert';
// ...
final response = await http.get('url_da_sua_api');
final decodedResponse = utf8.decode(response.bodyBytes);
Este código decodifica a resposta usando UTF-8.
Espero que isso resolva o seu problema. Por favor, teste e veja se os caracteres especiais são exibidos corretamente agora.
Espero ter ajudado e bons estudos!