10. ControlNet completo en backend y Flutter

Curso Flutter y .NET 8 con Novita AI: índice completo paso a paso

0. Curso Flutter + .NET 8 + Novita AI: índice completo

1. Arquitectura Flutter + backend .NET 8 con Novita AI

2. Configurar entorno .NET 8 + Flutter + Firebase + Novita AI

3. Backend .NET 8: Auth Firebase y esqueleto API

4. Integrar Novita AI: text-to-image e image-to-image en .NET 8

5. Webhook Novita y procesamiento asíncrono

6. Firestore, modelos y endpoints de dominio

7. Flutter: login Google y configuración API

8. Flutter: subida de imagen y creación de invitaciones

9. Listado, estado y detalle de invitaciones

10. ControlNet completo en backend y Flutter

11. LLM con Novita: img2prompt y adaptación de prompts

12. Despliegue, checklist final y publicación WordPress

Bonus 01: vídeo con FFmpeg y flujo opcional

Bonus 02: importador de modelos Novita a Firestore

Bonus 03: Prompt Generator y administración básica

Bonus 03: Prompt Generator y administración básica

Actualizado: 20 de febrero de 2026.

Este capítulo añade control estructural real al resultado IA mediante ControlNet.

Prerrequisitos

  1. Tener clonado o disponible codigo/ de esta serie.
  2. Contar con Firebase y Novita configurados para pruebas.
  3. Haber completado el capítulo anterior del curso.

Qué se implementó

  1. Nuevo campo en request backend: controlPreprocessor.
  2. Persistencia en Invitation: controlPreprocessor.
  3. NovitaService.StartGenerationAsync añade request.controlnet.units cuando hay imagen guía.
  4. UI Flutter con:
    • switch activar ControlNet
    • selector de imagen guía
    • controlModelId
    • controlStrength
    • controlPreprocessor

Payload de referencia

Cuando ControlNet está activo se añade a request:

  1. controlnet.units[0].model
  2. controlnet.units[0].weight
  3. controlnet.units[0].preprocessor
  4. controlnet.units[0].image (base64)

Flujo visual

flowchart LR
    A[Flutter Create Screen] --> B[controlImage + model + strength + preprocessor]
    B --> C[POST /api/invitations/create]
    C --> D[NovitaService StartGenerationAsync]
    D --> E[request.controlnet.units]
    E --> F[Novita async task]

Verificación de código

cd codigo
rg -n "controlPreprocessor|controlnet|controlImageUrl|controlStrength" backend app -S

Prueba manual recomendada

  1. Crea una invitación sin ControlNet.
  2. Crea otra con ControlNet (misma prompt/foto).
  3. Compara composición/pose entre ambos resultados.

Troubleshooting

  1. Resultado igual al baseline: controlStrength demasiado bajo.
  2. Error API: controlModelId inválido.
  3. Imagen guía no se aplica: controlImageUrl no subió correctamente.

FAQ corta

¿ControlNet reemplaza el prompt?

No, lo condiciona; el prompt sigue siendo clave.

¿Qué valor usar para controlStrength?

Empieza en 0.8 y ajusta según rigidez deseada.

¿Es obligatorio controlPreprocessor?

No, backend inferirá uno por defecto si no se envía.

Fuente verificada

  • Código del curso:
    • codigo/backend/InvitaIA.Api/Models/InvitationRequest.cs
    • codigo/backend/InvitaIA.Api/Services/NovitaService.cs
    • codigo/app/lib/screens/create_invitation_screen.dart
  • Documentación oficial Novita:

Share this content:

Curso Flutter y .NET 8 con Novita AI: índice completo paso a paso

9. Listado, estado y detalle de invitaciones 11. LLM con Novita: img2prompt y adaptación de prompts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.