Solución: Unhandled Exception: FormatException: Unexpected character al parsear JSON en Dart
La solución en 30 segundos: el cuerpo de la respuesta no es el JSON que crees. Imprime los bytes en bruto, decodifica con utf8.decode(response.bodyBytes) y nunca pases una página HTML de error o una cadena con BOM a jsonDecode.