latest

Introducción al lenguaje Dart. Básico. Parte 1

Dart es un lenguaje de programación orientado a objetos de código abierto desarrollado por Google. Fue presentado al público general en octubre del 2011 y su primera versión estable (ver 1.0) apareció en noviembre del 2013. Actualmente (enero 2019) va por su versión estable 2.1.0.

Atendiendo a lo comentado en el párrafo anterior, Dart cuenta con una versión de desarrollo bastante madura a día de hoy, a pesar de su todavía corta juventud. Tiene el apoyo constante de Google que pone a nuestra disposición diferentes APIs y herramientas sólidas para dotar a Dart de una gran versatilidad. Podemos usar Dart para:

  • Desarrollar aplicaciones móviles nativas (Android & iOS) con Flutter. Familiarizarnos con este SDK es el objetivo principal de este curso. Como veremos, según vayamos avanzando, la implementación con Flutter es 95% código Dart. Nos reservamos ese 5%, dado que Flutter nos permite integrar en nuestras aplicaciones código específico de una plataforma concreta (código Java o Kotlin en Android; y ObjectiveC o Swift en iOS) con el fin de cubrir determinadas funciones que no cuentan con soporte en las APIs de Flutter. Para ello, Flutter proporciona los denominados plugins.

    La combinación de Flutter y Dart nos permitirá desarrollar aplicaciones de manera muy eficaz y ágil. Por ejemplo, la función "hot reload" de Flutter nos ayudará a experimentar con nuestras interfaces de usuario e introducir modificaciones, así como corregir errores en ellas de manera casi instantánea (con latencias menores de 1 segundo).

    Pero, sin duda, la mayor ventaja que nos ofrece el SDK de Flutter es poder crear aplicaciones en lenguaje Dart que, en su versión de producción, son compiladas y generan código nativo para los ecosistemas Android e iOS. En definitiva, bajo un mismo proyecto podemos crear una aplicación móvil multiplataforma, reduciendo el esfuerzo y conservando el performance nativo.

  • Desarrollar Web apps programando con Dart (https://webdev.dartlang.org/). Por ejemplo, Google AdWords (la plataforma de Google para ofrecer publicidad patrocinada a sus anunciantes) está actualmente desarrollada en Dart. Aquí podéis encontrar una lista de compañías y negocios que usan Dart en sus Web apps en producción.

    Dart se adapta a la perfección para el desarrollo Web, incluyendo un buen número de librerías estándar (integradas en el SDK) que están muy bien diseñadas y que generan un DOM (Document Object Model) muy limpio. Es una muy buena opción para programadores con poca o ninguna experiencia en JavaScript (sin duda, el lenguaje estrella en la Web en los últimos años). Las cosas funcionan "como lo esperaría un desarrollador acostumbrado a trabajar en C, C# o Java".

    Las bibliotecas estándar incluidas proporcionan clases que de otro modo tendrían que estar en bibliotecas externas o ser construidas desde cero. Por ejemplo, la librería dart:html es un wrapper de los diferentes tipos de elementos HTML del DOM y otros recursos que las aplicaciones web necesitan para interactuar con el navegador (estilos CSS, almacenamiento local, reconocimiento de voz, eventos, etc).

    Cuando se necesita una librería externa, toda la gestión de dependencias es realmente sencilla gracias al gestor de paquetes de Dart, denominado Pub. Usando la Web de este gestor de paquetes podéis encontrar librerías para desarrollo Web que van desde herramientas, pasando por utilidades y hasta frameworks Web completos.
    El ejemplo siguiente demuestra lo fácil que es hacer el binding entre el contenido de una etiqueta HTML y el código Dart para implementar la lógica de un contador hacia atrás.
    Primero se aporta el código HTML:

    <html>
       <head>
       </head>
       <body>
           <h1 id="countdown"></h1>
       </body>
    </html>

    Y este es el código Dart:

    import 'dart:html';
     main() async {
       var countdown = querySelector("#countdown");
       for (int i = 100; i >= 0; i--) {
         countdown.text = "Time: $i";
         await window.animationFrame;
       }
     }
    Podéis probar el ejemplo "en vivo" con el editor DartPad aquí.

    Sin embargo, si queŕéis aprovechar las bondades del patrón de arquitectura MVC (Modelo-Vista-Controlador), que os aportará mejoras de estabilidad, productividad y modularización de vuestro proyecto Web, la utilización del Web app framework AngularDart, la versión de AngularJS para Dart desarrollada por Google, es la decisión ideal.

  • Desarrollar aplicaciones en línea de comandos y en el lado del servidor. En la página de dartlang.org encontraréis excelentes ejemplos de como desarrollar aplicaciones en línea de comandos y la correspondiente gestión de argumentos de entrada; así como un ejemplo sencillo de arquitectura cliente-servidor usando el framework gRPC que proporciona Dart para realizar Llamadas a Procedimientos Remotos.

Os animo a continuéis con el curso de Flutter con la Parte 2 de la Introducción Básica a Dart.

Author image
Iván González is postdoctoral researcher at the Castilla-La Mancha University.
Ciudad Real (Spain)