FLUTTER: EXPLICACIÓN COMPLETA
1. ¿Qué es Flutter?
Flutter es un framework de desarrollo multiplataforma creado por Google que permite construir aplicaciones nativas para:
-
Android
-
iOS
-
Web
-
Windows
-
Linux
-
macOS
Utiliza un único lenguaje: Dart.
El objetivo de Flutter es permitir escribir una sola base de código y generar apps nativas de alta performance sin depender de WebViews ni de renders nativos del sistema operativo.
2. Característica principal: Renderizado propio
Flutter no usa componentes nativos del sistema operativo.
En cambio:
-
Utiliza un motor gráfico propio: Flutter Engine (Skia).
-
Renderiza directamente en la pantalla cada píxel.
Esto significa:
-
La UI es idéntica en todas las plataformas.
-
No depende de actualizaciones del SO.
-
La performance es similar a apps nativas en C++/Java/Swift.
-
Tiene control total del renderizado, animaciones y layouts.
3. Ventajas principales
a) Rendimiento nativo
El código final se compila a código máquina (AOT compilation).
No hay puente JavaScript ni comunicación lenta con el SO.
b) UI consistente
Todos los widgets están renderizados por Flutter.
No hay diferencias entre versiones de Android, iOS, Linux o Windows.
c) Hot Reload
Permite aplicar cambios instantáneamente en la app sin recompilar.
d) Un solo código para muchas plataformas
Evita mantener proyectos separados para Android, iOS, Web, etc.
e) Ecosistema fuerte
Google lo usa internamente y grandes empresas también.
4. Desventajas principales
a) Tamaño inicial más grande
Las apps tienen un tamaño mínimo más elevado (debido al engine y assets).
b) No usa widgets nativos
Si necesitás integrarte al 100% con un componente del sistema (por ejemplo, un control nativo específico), requerís usar canales de plataforma.
c) JavaScript y Web tradicional no son el foco
Flutter Web funciona, pero no reemplaza frameworks JavaScript típicos como React o Vue para proyectos puramente web.
5. ¿Qué es Dart?
Dart es un lenguaje orientado a objetos creado por Google.
Características clave:
-
Tipado estático opcional.
-
Sintaxis similar a Java/C#.
-
Se compila en AOT (Ahead of Time) para producción.
-
Se compila en JIT (Just in Time) para desarrollo (Hot Reload).
Dart está optimizado para Flutter.
6. ¿Cómo funciona una app Flutter?
El flujo general:
-
Flutter arranca su motor (engine).
-
Crea un árbol de widgets (Widget Tree).
-
El árbol describe la UI y su estado.
-
El engine convierte el árbol en elementos renderizables.
-
Skia dibuja los píxeles en pantalla.
Jerarquía interna:
-
Widget: descripción inmutable de la UI.
-
Element: puente entre widgets y render objects.
-
RenderObject: objetos que calculan layout y dibujan.
7. Tipos de widgets
a) StatelessWidget
-
No guarda estado interno.
-
Se vuelve a construir cuando cambia algo externo.
b) StatefulWidget
-
Mantiene estado interno con un objeto
State. -
Se reconstruye solo en partes específicas
8. Arquitecturas para manejar estado
Flutter permite múltiples patrones:
-
setState (simple)
-
Provider
-
Riverpod
-
Bloc / Cubit
-
Mobx
-
Redux
-
GetX
El más recomendado hoy: Riverpod o Bloc según complejidad.
9. ¿Cómo se estructura un proyecto?
Estructura típica:
lib/
├── main.dart
├── screens/
├── widgets/
├── services/
├── state/
├── models/
└── utils/
main.dart es el punto de entrada.
10. ¿Cómo compila Flutter?
Para Android:
-
Dart → AOT (archivos .so)
-
Compilado con NDK + Gradle
Para iOS:
-
Dart → AOT (LLVM)
-
Empaquetado vía Xcode
Para Web:
-
Dart → JavaScript + HTML + Canvas/WebGL
Para Desktop:
-
Dart → binarios nativos (Linux / macOS / Windows)
11. ¿Por qué las apps Flutter se ven tan fluidas?
Porque Flutter maneja su propio render loop a 60/120 FPS, sin depender del renderizado nativo, y utiliza Skia, el mismo motor usado por Chrome y Android.
12. ¿Para qué tipo de proyectos sirve?
Flutter es excelente para:
-
Apps móviles modernas
-
Apps multiplataforma
-
Apps de escritorio
-
Apps de alto rendimiento
-
Apps con UI compleja o animaciones
No es ideal para:
-
Web muy SEO
-
Web con interacción tradicional HTML/CSS pura
-
Apps extremadamente dependientes de componentes nativos específicos