En este artículo quiero compartir contigo mi experiencia en el desarrollo de aplicaciones móviles con Flutter, te mostraré algunas características, su forma de trabajar y algunas consideraciones que debes tener cuando empiezas a crear tus apps con este framework.
¿Qué es Flutter?
Empecemos por esta pregunta. Flutter es una tecnología multiplataforma que consiste en un framework de desarrollo Open Source de Google para apps iOS
, Android
, Web
y escritorio
📱💻. Es decir que con un solo desarrollo, podemos crear nuestras aplicaciones para distintas plataformas, ahorrando tiempo y costos que tomarían realizarlas con un desarrollo nativo.
Tecnología híbrida
Este framework se basa en Dart que es su lenguaje de programación. Dart es un lenguaje de programación de código abierto, creado por Google y es similiar a Java, C#, o Javascript. La gran ventaja de Dart esque su compilación se realiza de manera directa al procesador del dispositivo, es decir su compilación se realiza directo con el hardware, lo que hace que todos los procesos sean muy rápidos, algunos coinciden en que su compilación incluso es más rápida que con un desarrollo nativo.
Características de Dart
- AOT (Ahead Of Time): Complilado a un rápido y predecible código nativo y personalizable.
- JIT (Just in TIme): Compilado para una velocidad excepcional de desarrollo.
- Hace fácil la creación de animaciones y transiciones que pueden correr a 60fps. Las animaciones que proporciona Dart a Flutter son limpias y dinámicas con un buen performance para la aplicación.
- Dart tiene una curva de aprendizaje relativamente baja.
Engine (motor) de Flutter
El motor o core de Flutter esta escrito principalmente en el lenguaje C++. Esto produce que la renderización de la app llegue a un nivel de hardware, esto permite hacer un desarrollo nativo para los SDKs de Android e iOS 😮.
Flutter vs otras tecnologías
Como ya es conocido, Flutter no es la única tecnología que permite un desarrollo de aplicaciones multiplataforma. Existen tecnologías como Ionic, React Native, Xamarin que se basan en tecnologías web como HTML CSS y Javascript. Sin embargo, Flutter representa una mejor opción para el desarrollo de aplicaciones debido a su fácil desarrollo, integración nativa con las diferentes plataformas, compilación rápida, creación de interfaces nativas de alta calidad y una gran comunidad que la respalda y va creciendo constantemente.
¿Cómo trabaja Flutter?
La filosofía de Flutter es que todo es un widget. Entonces... ¿qué es un widget? Un widget puede ser cualquier elemento de la interfaz de una aplicación como podemos ver en la siguiente imágen:
A partir de estos widgets podemos crear vistas, pantallas y funcionalidad para nuestras aplicaciones de una manera sencilla.
El desarrollo de aplicaciones con Flutter es relativamente sencillo, la sintaxis de su lenguaje es muy intuitiva, además existe una enorme cantidad de documentación, ejemplos, tutoriales y recursos que te ayudarán con tu desarrollo ✌.
Consideraciones y recomendaciones 💯
Cuando vayas a crear una app, asegúrate de tener en cuenta los siguientes aspectos (basados en mi experiencia). Sobre como crear, desplegar y manetener tu app de la mejor manera.
Elige un nombre único y corto para tu aplicación
Tener un nombre corto y fácil de recordar y único ayudará a que tu aplicación sea fácil de encontrar en las tiendas de aplicaciones e indexadores de búsqueda como Google.
Asegúrate de elegir un identificador único para tu aplicación
Las aplicaciones en Flutter al igual que las desarrolladas de manera nativa tienen un identificador único, cuando creas una aplicación en Flutter este identificador por defecto es
com.example.com
(o algo similar). Asegúrate de cambiar este identificador, este paso es muy importante ya que si deseas publicar tu app en las tiendas, este identificador DEBE SER ÚNICO en todo el mundo. Mi recomendación esque configures este identificador apenas inicies tu desarrrollo.
Define un logo para tu aplicación
Es importante que definas un logo para tu aplicación, ten en cuenta que a la hora de publicar tus aplicaciones este logo debe estar en un buen formato de imágen. Por ejemplo
App Store
solicita que tu logo tenga una resolución de 1024 x 1024 pixeles. Entonces es importante que desde un inicio cuentes con este formato, de manera que puedas adaptarlo a todos los tamaños que solicitan las tiendas de aplicaciones.
Términos de uso y políticas de privacidad
A la hora de publicar tu aplicación, las tiendas de aplicaciones solicitan que cuentes con una página web donde se detallen los términos de uso y políticas de tu aplicación. Si tu proyecto no dispone de una web oficial, puedes publicar esta página en algún hosting gratuito. Ten en cuenta, que muchos usuarios se toman el trabajo de conocer estas políticas.
Versionamiento de tu aplicación
Cuando hayas desplegado tu app en las tiendas de aplicaciones es posible que necesites lanzar nuevas actualizaciones, ya sea para corregir errores, agregar nuevas funciones o cualquier otro aspecto. Es importante que mantengas un correcto versionamiento de tu aplicación. Mi recomendación es que inicies con un versionamiento semántico de la forma
X.Y.Z
. DondeX
representa versiones mayores de tu app,Y
indica las actualizaciones a alguna versión yZ
corresponde a corrección de errores. Existen otras técnicas para versionar tu aplicación, pero esta técnica es una buena para iniciar.
Soporte a versiones anteriores
Gran parte de las aplicaciones trabajan con un servidor, es decir una conexión para gestionar datos en una base de datos mediante una
ApiRest
. Cuando actualices tu app en las tiendas de aplicaciones asegúrate que los endpoints de lasApiRest
del servidor den soporte a las versiones anteriores de tu aplicación. Esto es importante ya que no todos los usuarios actualizan las aplicaciones.
Versiones de Android y iOS
Cuando crees tus aplicaciones asegúrate de las versiones de Android e iOS para las que estará disponible tu aplicación. Esto dependerá en gran parte de las librerías o paquetes que uses en tus proyectos. Mi recomendación es que para Android, la versión mínima que soporte la app sea la versión de Android 5.0 Lollipop
. Mientras que para iOS, la versión mínima sea iOS 9
. De esta manera llegarás a una mayor cantidad de usuarios.
Aplicaciones Responsivas
Aunque este concepto se aplica a las aplicaciones y sitios web; también se lo aplica en el desarrollo de aplicaciones móviles. Cuando crees tu app asegúrate que el comportamiento de los widgets sea el mismo en las diferentes resoluciones y tamaños de pantalla de los dispositivos. Ten en cuenta que al subir tu app a las tiendas de aplicaciones, estas te solicitarán capturas de pantallas en diferentes resoluciones de dispositivos por lo cual es importante que el contenido de tu app se adapte a cualquier dispositivo móvil.
Orientación de tu app
Es importante que definas desde un inicio la orientación de tu app es decir si trabajará en modo
Landscape
(horizonta) o en modoPortrait
(vertical). Si tu app usa solo uno de estos modos, debes restringir el otro. Es decir, que aunque la orientación de tu dispositivo cambie la orientación en la app no cambiará. Por otro lado si tu app trabajará en ambos modos, la carga de trabajo de desarrollo puede aumentar dependiendo de la complejidad del diseño de la app. Si vas a trabajar con ambos modos, te recomiento probar constantemente tu app para detectar de forma temprana problemas de diseño.
Usuario y contraseña para revisión en tiendas
Si tu aplicación tiene un inicio de sesión para acceder, es necesario que generes un usuario y contraseña para los revisores de las tiendas de aplicaciones. Para aprobar la publicación de tu aplicación los revisores deben acceder a toda la funcionalidad de tu app. Te recomiendo crear un usuario para esta revisión.
Sesión de invitado
Relacionado a lo anterior, si tu app contiene o requiere un inicio de sesión para alguna función específica,
App Store
te obliga a crear un sesión de invitado, es decir que cualquier usuario pueda navegar libremente por la app y únicamente cuando requiera alguna acción (realizar una compra por ejemplo) se solicite el inicio de sesión (enPlay Store
no es necesaria esta sesión de invitado). Si tu app requiere un unicio de sesión cuando se inicia, te recomiendo que crees una sesión de invitado donde permitas al usuario explorar todas las funciones y solicites un inicio de sesión cuando es estrictamente necesario.
Permisos de uso
Cuando desarrolles una app puede que necesites solicitar acceso desde tu app a ciertas funciones del dispositivo tales como el uso de la cámara, el acceso a la galería, ubicación del usuario, agenda de contactos, etc. En estos casos, debes mostrar un mensaje muy claro y corto al usuario del por qué estás accediendo a dichas funciones. Esto es importante ya que en la revisión de tu aplicación en
App Store
, sus revisores toman muy en cuenta estos mensajes y en caso de no ser claros con estos mensajes, simplemente tu app no aprobará la revisión. Recordemos que las políticas de privacidad en App Store son mucho más estrictas que enPlay Store
.
Cuentas de desarrollador para despliegues en tiendas
Si quieres que tu app esté disponible en las tiendas de aplicaciones como
App Store
yPlay Store
debes tener una cuenta de desarrollador en dichas plataformas. En el caso de Play Store debes registrarte en su plataforma Google Play Console. Deberás realizar UN PAGO ÚNICO de alrededor de30$
para poder desplegar tus aplicaciones. En el caso de App Store su platadorma de denomina App Store Connect. Deberás realizarPAGOS ANUALES
de alrededor de100$
para poder publicar tus aplicaciones y lanzar actualizaciones. En el caso de que no hagas dicho pago tus aplicaciones permanecerán disponibles en App Store, sin embargo no podrás lanzar actualizaciones.
Despliegues en ambiente de pruebas
Cuando vayas a hacer despliegues de tus aplicaciones en las tiendas de aplicaciones puedes hacer despliegues en ambientes controlados para un grupo de personas o dispositivos, de manera que puedas validar el correcto funcionamiento de tu aplicación antes de hacerla pública para cualquier usuario. Tanto
Play Store Console
comoApp Store Connect
cuentan con estos ambientes de pruebas.
Espero que estas recomendaciones y consejos te sean útiles a la hora de crear y mantener tus aplicaciones 😉. Sin duda habrán otros aspectos a tomar en cuenta, pero todo esto esta basado en mi experiencia creando aplicaciones con este asombroso Framework. Si conoces de algun otro aspecto importante que deba estar en esta lista, te invito a que compartas conmigo tu experiencia para ayudar a muchos otros desarrolladores con sus aplicaciones.
You can find this and other posts on my Medium profile some of my projects on my Github or on my LinkedIn profile.
¡Thank you for reading this article!
If you want to ask me any questions, don't hesitate! My inbox will always be open. Whether you have a question or just want to say hello, I will do my best to answer you!