Flutter es un SDK desarrollado por la compañía Google para crear aplicaciones móviles tanto para Android como para iOS (Apple). Actualmente es uno de los proyectos de desarrollo de aplicaciones móviles que más está creciendo.
Las tres principales ventajas que ofrece Flutter respecto a otras frameworks de desarrollo de aplicaciones multiplataforma:
Explicado de forma muy simple, Flutter utiliza un motor gráfico, llamado Skia, que renderiza en 2D los elementos gráficos. Está escrito en C, C++ y mayormente, en Dart. De forma resumida, la capa del motor está escrito en C++ y la de los Widgets en Dart.
Widget es la palabra más repetida cuando se hace referencia a Flutter, se refiere a los elementos gráficos que componen una vista. Por ejemplo, un botón, un texto o una imagen. Aunque también hay Widgets más complejos que están formados por otros Widgets.
Este utiliza Dart como lenguaje de programación, también desarrollado por Google. Posiblemente, esta sea una desventaja, ya que Dart no era un lenguaje muy conocido ni usado por la comunidad de desarrolladores móviles (Swift, Objective-C, Kotlin, Java) y web (JavaScript, PHP, Java, Ruby…). Aunque es muy parecido a Java y C# (Microsoft), si se tiene experiencia con alguno de estos lenguajes es muy intuitivo empezar con Dart. Si bien es cierto que Dart aún no incluye características muy útiles de los nuevos lenguajes de programación como Swift y Kotlin, Google lo está evolucionando para facilitar el desarrollo con Flutter.
La estrategia de Flutter, todo es un widget, sigue las bases de la programación orientada a objetos hasta la interfaz de usuario: la interfaz del programa consta de diferentes widgets que pueden estar anidados entre ellos. Cada botón y texto mostrado es un widget. Estos cuentan con diferentes propiedades que se pueden modificar.
Pueden interactuar entre sí y reaccionar a cambios de estado externos mediante sus funciones integradas. Todos los elementos importantes de la interfaz de usuario incluyen widgets que se corresponden con los diseños de Android y iOS o las aplicaciones web convencionales. Si se desea, estos widgets se pueden ampliar con funciones adicionales o se pueden crear widgets propios que se pueden combinar fácilmente con los ya existentes.
En comparación con otros SDK, los widgets ofrecen una mayor flexibilidad, pero cuentan con la desventaja de que forman parte del código fuente del programa, por lo que el código queda muy anidado y puede resultar confuso.