Dart es el lenguaje de programación que se utiliza en Flutter. Es un lenguaje de programación de código abierto optimizado para el cliente, cuya finalidad es el rápido desarrollo de aplicaciones en cualquier plataforma.
Google es el creador de Dart y este último ha recibido bastante soporte por parte de sus creadores para robustecerlo y hacerlo sumamente confiable. Dart tiene en esencia la misma lógica y sintaxis de programación que los lenguajes basados en C (C, C++, C#, Java y JavaScript), lo que lo hace muy intuitivo y fácil de implementar, e incorpora muchas de las características que hicieron trascender a los lenguajes basados en C.
A continuación, harás una revisión de los fundamentos de programación trasladados al lenguaje de programación Dart. Con ello se busca que transfieras las competencias de programador a este nuevo entorno de desarrollo y dar paso a agregar funcionalidad a las aplicaciones móviles. De igual modo, el siguiente tema te servirá como un repaso de las habilidades que se requieren en el paradigma de la lógica de la programación.
Tipos de datos y variables
De acuerdo con Napoli (2020), Dart te da la posibilidad de tener ventajas como la capacidad de compilar a código nativo, haciendo que el resultado sean aplicaciones rápidas. Iniciarás este aprendizaje repasando algunos puntos fundamentales de la programación desde la perspectiva de Dart.
Como todo lenguaje de programación, Dart utiliza variables. Se entiende el concepto de variable como una instancia que permite almacenar temporalmente un valor, además, es la unidad básica de memoria en un lenguaje de programación.
En el caso de Dart, para declarar una variable se puede usar la palabra reservada “var”. Observa el ejemplo:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
En caso de usar “var”, estás definiendo una variable sin tipo y el propio lenguaje hará uso de la inferencia al asignarle un valor inicial. En otras palabras, al declarar una variable con “var” estás haciendo que Dart asigne el tipo de variable a utilizar.
Puedes evitar que el lenguaje infiera el tipo de variable anteponiendo en la declaración la palabra reservada y el tipo de variable al declarar. Para ello, utiliza las siguientes palabras reservadas para definir el tipo de variable. De acuerdo con Payne (2019), los tipos de valores que soporta Dart son los siguientes:
Observa el ejemplo de declaración de tipos de variables:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Dentro de Dart existe un tipo de dato “dynamic''. Las variables declaradas de esta forma pueden tomar cualquier tipo de dato anterior y se puede cambiar en cualquier otro momento. En esencia, son muy similares a las declaradas con la palabra “var”, salvo que “var,” una vez que el Dart infiere el tipo de dato, ya no se puede cambiar después.
Ejemplo de declaración dynamic:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Las constantes son objetos que almacenan un valor que no cambia y se declaran con la palabra reservada “const''. Las constantes tienen la característica de que guardan el valor antes de la ejecución del programa. Existe otro tipo de dato llamado “final” que es muy similar a las constantes y almacena un valor de manera permanente, sin embargo, el tipo de dato “final” aloja el valor en la memoria al momento de ejecutar la aplicación.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
También puedes crear constantes y variables finales estáticas de clase, usando la palabra “static” antes de “const” o “final''. Las variables estáticas son las que se quedan con un valor fijo y no cambian.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Operadores
Un operador es un carácter (símbolo) reservado en el lenguaje, que permite realizar cálculos aritméticos, acciones de igualdad, relacionar, hacer pruebas lógicas, funciones condicionales y la aplicación de una notación de cascada (ejecución de acciones conforme a la jerarquía operacional). A continuación, se presentan las tablas de los operadores:
Tabla 1. Operadores aritméticos.
Tabla 2. Operadores de igualdad y relación.
Tabla 3. Operadores de asignación.
Tabla 4. Operadores lógicos.
Tabla 5. Operador ternario.
La importancia del uso de variables radica no solamente como una unidad de memoria para almacenar datos y recuperarlos, sino que es una herramienta esencial en el desarrollo, ya que facilita la codificación representando valores en una expresión de programación y haciendo que el programador pueda recordar más fácilmente los elementos a los cuales las variables se implementan.
Estructuras condicionales
Al igual que en otros lenguajes de programación, un elemento esencial es el uso de condicionales para la toma de decisiones. En el caso de Dart, se utilizan por lo menos dos condicionales, esto sin considerar el uso del operador ternario. Los condicionales más utilizados se mencionan a continuación:
Si condicional (If - else): esta estructura condicional evalúa una prueba lógica y, en caso de que esta se cumpla (sea verdadera), ejecuta un bloque de código. En caso contrario, ejecuta otro bloque de código que se ubica debajo de la palabra reservada “else” (sino), o incluso puede tener otra estructura condicional dentro de los bloques. A este tipo de agrupamiento se le conoce como anidamiento.
Analiza el ejemplo de código:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Switch: esta instrucción permite evaluar una variable y, de acuerdo con el valor de esta, se puede aplicar la ejecución de diversos bloques de código según corresponda. También se pueden utilizar etiquetas como “continue” para saltar a otro caso del switch.
Observa el ejemplo de código:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
El uso de condicionales permite decidir cuál es el flujo de la aplicación, dependiendo de la evaluación lógica de la condición. Los condicionales son muy eficientes para dar funcionalidad a las aplicaciones y permiten hacer que la aplicación interactúe con el usuario con base en las condiciones dadas, proporcionando autonomía a las tareas a realizar.
Bucles
Los bucles o ciclos son la forma de realizar instrucciones iterativas mediante el cumplimiento de una condición, es decir, que se pueda establecer esta repetición, ya sea mientras no se cumpla, o bien, al cumplirse una condición establecida. Los bucles son útiles para realizar operaciones repetitivas o para enumerar o enlistar los elementos de una colección de datos.
Ciclo for (para): es una alternativa muy popular en todos los entornos de desarrollo. El ciclo permite realizar una repetición con base en una condición de repetición numérica, en un incremento o en los elementos de una colección de datos realizando un bucle que se basa en el incremento de una variable hasta alcanzar un valor deseado:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Una manera de implementar “for” es recorrer una lista usando la palabra reservada “in”, que toma un valor del recorrido de una lista (colección similar a un arreglo).
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Otra alternativa es recorrer la misma lista utilizando el método forEach( ).
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Ciclo while (mientras): es un tipo de bucle que permite la repetición de bloques de código mientras exista y se siga cumpliendo una condición (prueba lógica). Por ejemplo, para imprimir los primeros 1,000 números en pantalla.
Revisa el ejemplo de código:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Ciclo do while (haz mientras): es similar al anterior, solo que aquí se ejecuta una vez el bloque de código y posteriormente se evalúa la condición. En caso de cumplirse, se realizan las instrucciones en bucle hasta que la condición deje de cumplirse.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Los ciclos son una gran alternativa para realizar tareas repetitivas y optimizar los tiempos de procesamiento. El poder de procesamiento y de cálculo iterativo son parte de las ventajas que ofrece.
Listas (arreglos): son variables que permiten asignar una colección de datos almacenados en una especie de lista. Haciendo la analogía a otros lenguajes de programación, su estructura, concepto y funcionamiento es muy similar a los llamados arreglos.
Las listas en Flutter son muy útiles para preparar el diseño y agregar el conjunto de widgets. Para declarar listas, escribes la palabra reservada “List”, seguido del tipo de elementos que contendrá. Esto lo indicas colocando el tipo de datos a almacenar dentro de los símbolos “<>”, como se ve en el ejemplo de abajo. Para asignar elementos, usa el operador de asignación “=”, seguido de los elementos separados por comas dentro de corchetes “[]”, tal como se muestra a continuación:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Puedes agregar más elementos a la lista de la siguiente manera:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Puedes remover elementos de la lista de la siguiente manera:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Puedes concatenar dos listas distintas en una sola de la siguiente manera:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Además, también puedes construir una lista con elementos de tipo dynamic, en otras palabras, una lista de cualquier tipo de objetos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Las listas son una herramienta muy útil, sobre todo al momento de crear árboles de widgets, ya que gracias a las listas es posible realizar las ramificaciones del árbol, así como crear varios hijos en el proceso de maquetado de la aplicación. De igual manera, te puedes auxiliar de las listas para almacenar varios datos dinámicos al momento de hacer actualizaciones en datos almacenados.
Los mapas son colecciones que se caracterizan por componerse de dos elementos: clave (key): valor (value). También se conocen como diccionarios. Este es un símil de un diccionario en la dupla de valores (palabra, significado).
De acuerdo con Dart (s.f.), los tipos de objetos que se pueden inicializar pueden ser de cualquier tipo. Para inicializar una variable de tipo Map se declara la palabra Map, seguida del tipo de datos que será la llave y el valor encerrado entre < >, basta con asignar entre llaves {} los valores clave: valor separados por una coma, así pues, tienes lo siguiente:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para agregar nuevos elementos al Map, usa lo siguiente:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para eliminar un elemento del Map, usa la clave del elemento a eliminar:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Los mapas son uno de los tipos de colecciones o estructuras de datos que tiene Dart para manejar la información; son muy útiles para la generación de modelos de datos para hacer consultas, crear registros y actualizaciones hacia los diferentes tipos de almacenamientos, haciendo uso de las llamadas API que proporcionan los proveedores de los servicios.
Dart es el lenguaje de programación por defecto que se utiliza en el paquete de desarrollo Flutter. Es un lenguaje que se ha ideado para ser de rápida y fácil adaptación e implementación. Al ser un lenguaje que toma las bases de aquellos basados en C, hace que el proceso sea más amigable de implementar.
Las estructuras condicionales y los bucles son elementos esenciales para proveer de funcionalidad a las aplicaciones móviles. También se hacen uso de las instancias de Dart para diseñar las pantallas que se llaman escenas. Las estructuras de datos funcionan para agregar varios elementos, por ejemplo, el uso de colecciones que se conocen como listas, las cuales son muy importantes en el desarrollo de aplicaciones, ya que su uso facilita la creación de widgets con múltiples hijos para crear los árboles de widgets. Las listas también son necesarias para crear widgets de manera dinámica, con el fin de contener elementos, ya sea textos, imágenes, etcétera.
El equipo de desarrollo de Dart (s.f.) menciona dos puntos muy importantes, el primero de ellos es ser consistente, tener los tipos de datos, los argumentos y el uso de un formato bien estructurado. El segundo es ser breves. Dart se ha diseñado para ser breve y concreto, y si se aplican estas dos cualidades, es muy posible que tu código sea amigable y de fácil acceso.
Asegúrate de: