Correção: Unhandled Exception: FormatException: Unexpected character ao fazer parse de JSON em Dart
A correção em 30 segundos: o corpo da resposta não é o JSON que você acha. Imprima os bytes brutos, decodifique com utf8.decode(response.bodyBytes) e nunca passe uma página HTML de erro ou uma string com BOM para jsonDecode.