La documentación del backend te da un comando curl; una app de Flutter necesita Dart. Este conversor tiende el puente, analizando las opciones de curl como lo hace el propio curl y generando código que usa package:http, el paquete del que ya depende casi todo proyecto Dart o Flutter. Las cabeceras se recogen en un mapa tipado, un cuerpo JSON se convierte en un mapa de Dart codificado con jsonEncode en vez de una cadena pegada, y la autenticación básica se reconstruye con base64Encode a partir de las credenciales decodificadas. Los verbos que no tienen atajo caen en un http.Request, así que un método inusual sigue produciendo código funcional.
Características
Analiza -X, -H, -d, --data-raw, --json, -u, -b, -A, -e y -G como lo hace curl
Genera código con package:http, el cliente HTTP estándar de Dart
Cabeceras recogidas en un Map<String, String> tipado
Cuerpos JSON representados como mapa de Dart y codificados con jsonEncode
Autenticación básica reconstruida con base64Encode y no con un Base64 pegado
Recurre a http.Request para verbos sin método abreviado
Avisa de las opciones de curl sin equivalente razonable en Dart
Cómo usar cURL a Dart
Pega el comando curl de la documentación de tu API
Lee el Dart generado a la derecha
Revisa los avisos sobre opciones que no se han podido trasladar
Copia el código o descárgalo como archivo .dart
Ejemplo
Entrada
curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'
Salida
final response = await http.put(url, headers: headers, body: body);
El verbo viene de -X, y el cuerpo JSON se construye como mapa de Dart antes de codificarlo.
Errores comunes y solución de problemas
No se encuentra el paquete al ejecutar el archivo. — Añádelo a pubspec.yaml en dependencies como http y ejecuta dart pub get. No forma parte del SDK, aunque lo mantiene el equipo de Dart.
La petición falla solo en Flutter web. — Eso es CORS, no el código. El navegador aplica la política de mismo origen que un comando curl nunca ve, así que la API debe enviar las cabeceras Access-Control correctas.
Una cadena del cuerpo se interpola de forma extraña. — El signo de dólar inicia una interpolación en Dart. En los literales generados va escapado, pero si pegas un valor a mano escapa cualquier $ como \$.
La petición funciona en Android pero no contra un servidor local en el emulador. — Un emulador de Android no ve el localhost de la máquina anfitriona: usa 10.0.2.2. Además, el HTTP en claro debe permitirse en la configuración de seguridad de red.
Preguntas frecuentes
¿El código generado funciona en una app de Flutter?
Sí. package:http funciona igual en Flutter y en Dart puro, así que el código de la petición puede pegarse tal cual en una clase de servicio. Solo conviene sustituir la impresión final por lo que haga tu app con la respuesta.
¿Conviene usar package:http o Dio?
package:http es la opción oficial y más ligera, y cubre casi cualquier petición. Dio añade interceptores, cancelación y utilidades multipart, y su API es lo bastante parecida como para traducir esta salida sin problema.
¿Cómo se convierte un cuerpo JSON?
Se analiza y se escribe como literal de mapa de Dart, y después se codifica con jsonEncode. Así los objetos y arrays anidados siguen siendo legibles y puedes sustituir valores por variables directamente.
¿Y si el método no tiene un ayudante tipo http.get?
El código generado construye un http.Request con el verbo como cadena y lo envía con send(), lo que cubre PURGE, LINK o cualquier otro que use una API.
¿Se sube el comando curl para convertirlo?
No. El análisis y la generación de código ocurren en tu navegador, así que los tokens y las claves de API dentro del comando se quedan en tu dispositivo.
Herramientas relacionadas
cURL a Swift — Convierte un comando curl en código Swift con URLSession.
cURL a Fetch — Convierte un comando curl en una llamada fetch() de JavaScript.
curl a Python — Convierte un comando curl en un script de Python con requests.
curl a Go — Convierte un comando curl en código de Go con net/http.
curl a Node.js — Convierte un comando curl en código de Node.js con axios.
Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Más herramientas de Herramientas de API
cURL a Fetch — Convierte un comando curl en una llamada fetch() de JavaScript.
Analizador de URL — Descompone una URL en sus partes y lista los parámetros de consulta.
Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Generador de URL y UTM — Construye y valida URL de producción codificadas con parámetros UTM.
Probador de API de OpenAI — Crea, ejecuta y copia solicitudes a la API de Chat Completions de OpenAI como cURL, Python y JavaScript.
Probador de API de Anthropic Claude — Crea, ejecuta y copia solicitudes a la API de Mensajes de Anthropic Claude como cURL, Python y JavaScript.
Probador de API de Google Gemini — Crea, ejecuta y copia solicitudes generateContent de Google Gemini como cURL, Python y JavaScript.
Probador de API de Replicate — Crea, ejecuta y copia solicitudes de predicción de la API de Replicate como cURL, Python y JavaScript.
Probador de API de Hugging Face — Crea, ejecuta y copia solicitudes a la API de Inferencia de Hugging Face como cURL, Python y JavaScript.
curl a Python — Convierte un comando curl en un script de Python con requests.
curl a Go — Convierte un comando curl en código de Go con net/http.
curl a PHP — Convierte un comando curl en un script PHP con la extensión cURL.