Mi experiencia:
Llevo unos 10m desarrollando y aprendiendo Flutter, vengo de trabajar con Swift haciendo apps nativas desde el 2014.
Es una autentica locura, la velocidad/calidad con la que se desarrolla con este Framework.
Animaría a toda persona que quiere empezar a desarrollar a echarle un vistazo.
Durante este tiempo he visto aplicaciones móvil, desktop, web y francamente me han evangelizado. Acabo de probar en VisionOS y tambien "compila" sin problema....
Actualmente utilizo una ariqutectura con routing, provider, bloc/cubit, repositorios, dominio/service.
Sí hay más desarrolladores flutter, me gustaria que este hilo sirva para compartir dudas/experiencias
Bienvenidos al Hilo Introductorio de Flutter
¿Qué es Flutter?
Flutter es un SDK de código abierto creado por Google que permite a los desarrolladores crear aplicaciones nativas para Android, iOS, Web y desktop desde una única base de código.
Ventajas de Flutter
- Desarrollo multiplataforma: Flutter permite el desarrollo de aplicaciones para Android, iOS, Web y desktop con un solo código fuente.
- Hot Reload: Este es una gran característica que permite a los desarrolladores ver los cambios casi en tiempo real sin la necesidad de reiniciar la aplicación.
- Rendimiento: Dado que Flutter compila el código en código nativo de ARM, se pueden obtener altos niveles de rendimiento.
- Personalización: Flutter ofrece una gran cantidad de widgets preconstruidos que puedes personalizar para lograr el aspecto deseado.
- Comunidad: Cuenta con una comunidad activa que ayuda a resolver problemas, compartir ideas y mejorar el SDK.
Cómo empezar con Flutter
Antes de empezar a trabajar con Flutter, necesitas tener instalado el siguiente software:
- Flutter SDK: Instalar Flutter
- Android Studio o VS Code: Instalar Android Studio / Instalar VS Code
Luego de tener todo instalado, puedes crear tu primera aplicación siguiendo esta guía: Guía inicial de Flutter
Arquitecturas populares en Flutter
Hay muchas arquitecturas diferentes que puedes usar al desarrollar aplicaciones con Flutter, aquí te menciono algunas populares:
- Provider: Este es un patrón de administración de estado recomendado por el equipo de Flutter. Más información
- Bloc: Es un patrón que se basa en la idea de los eventos de entrada y los estados de salida. Más información
- GetX: Es un paquete de alta productividad para Flutter que proporciona una solución de administración de estado, dependencia y rutas. Más información
Recursos adicionales
- Documentación oficial de Flutter
- Curso de Flutter en Udemy (siempre se recomienda la Dra Angela Yu)
- Otro curso de Udemy recomendado en el hilo
- Libro "Flutter in Action"
- Galería de ejemplos de Flutter
Comunidad Flutter
Paquetes Populares en Flutter
Estos son algunos de los paquetes que utilizo usualmente
auto_route: Este paquete facilita la navegación y la generación de rutas en Flutter.
cached_network_image: Este paquete permite a las imágenes de la red ser almacenadas en caché para un rendimiento más rápido.
collection: Mejora las capacidades de las colecciones de Dart y proporciona algoritmos adicionales que no se encuentran en el SDK de Dart.
connectivity_plus: Este paquete permite a las aplicaciones Flutter detectar la conectividad de la red.
cupertino_icons: Proporciona íconos adicionales para tu aplicación.
another_flushbar: Es un widget que se utiliza para notificar mensajes y alertas en la aplicación.
datadog_flutter_plugin: Proporciona funciones de monitorización y trazabilidad para tu aplicación Flutter.
device_info_plus: Este paquete proporciona información detallada sobre el dispositivo que ejecuta la aplicación.
dio: Paquete para hacer solicitudes HTTP.
dio_cache_interceptor: Permite la gestión de la caché en las solicitudes HTTP de Dio.
dio_cache_interceptor_hive_store: Proporciona una tienda de caché basada en Hive para Dio.
isar: Paquete para manejar una base de datos NoSQL en la aplicación Flutter.
isar_flutter_libs: Dependencias necesarias para utilizar Isar en Flutter.
equatable: Ayuda con las comparaciones entre objetos en Dart.
firebase_analytics: Permite la integración con las funciones de análisis de Firebase.
firebase_core: Es el paquete base para todas las funcionalidades de Firebase.
firebase_crashlytics: Permite la integración con las funciones de reporte de errores de Firebase.
firebase_performance: Proporciona herramientas de seguimiento de rendimiento de Firebase.
firebase_remote_config: Permite la integración con la funcionalidad de configuración remota de Firebase.
flutter_branch_sdk: Permite la integración con la plataforma de enlaces profundos Branch.
flutter_secure_storage: Proporciona una forma segura de almacenar datos en dispositivos móviles.
freezed_annotation: Utilizado para la generación de código en conjunción con el paquete Freezed para el manejo de estados inmutables.
get_it: Un servicio de localización y administrador de estado para Dart y Flutter.
flutter_bloc: Un paquete de administración de estado basado en los patrones BLoC y cubit.
hydrated_bloc: Una extensión de flutter_bloc que permite almacenar y recuperar estados de BLoC automáticamente.
bloc_concurrency: Proporciona extensiones para controlar la ejecución concurrente de eventos de BLoC.
in_app_review: Proporciona una forma de solicitar y mostrar revisiones en la aplicación.
json_annotation: Proporciona anotaciones personalizadas que pueden ser utilizadas por el paquete json_serializable.
logging_flutter: Un paquete de registro para Flutter.
package_info_plus: Este paquete proporciona una API para consultar información sobre un paquete de aplicaciones.
permission_handler: Proporciona una forma de solicitar permisos en Flutter.
provider: Un paquete de administración de estado recomendado por el equipo de Flutter.
rxdart: Proporciona funcionalidades de programación reactiva para Dart.
shake: Permite abrir una consola QA al agitar el dispositivo.
shared_preferences: Proporciona una forma persistente y asíncrona de almacenar datos simples.
flutter_custom_tabs: Un paquete para lanzar URLs en tabs personalizadas en dispositivos móviles.
url_launcher: Proporciona una forma de lanzar URLs en la plataforma de destino.
auto_size_text: Un widget de texto que se redimensiona automáticamente su tamaño de fuente para ajustarse perfectamente dentro de sus límites.
devicelocale: Proporciona una forma de obtener el idioma actual del dispositivo.
flutter_localized_locales: Proporciona una forma de localizar los nombres de los idiomas en Flutter.
flutter_animate: Paquete para crear animaciones en Flutter.
animations: Proporciona una serie de widgets predefinidos con animaciones.
stream_transform: Proporciona una colección de utilidades de alto orden para Stream.
meta: Proporciona anotaciones que desarrolladores de Dart pueden usar para expresar las intenciones que las herramientas estáticas, como los analizadores, pueden usar para proporcionar comentarios.
share_plus: Proporciona una forma de compartir contenido.
path_provider: Encuentra directorios comunes y de aplicación en los sistemas de archivos del host.
infinite_scroll_pagination: Proporciona una forma de implementar la paginación con desplazamiento infinito.
rx_shared_preferences: Proporciona una forma de utilizar Shared Preferences con RxDart.
modal_bottom_sheet: Proporciona una forma de presentar una hoja inferior modal en Flutter.
flutter_markdown: Un renderizador de Markdown en Flutter.
Template básico que utilizamos dentro de poco le meteremos un update
Eventos en España
- Sé que tanto en Madrid como Barcelona hay empresas como VGV, mediamarket y otras montando eventos. Si os interesa amplio sobre ello
Proximamente hare update con mejoras o comentarios que dejeis.