Como crear un Future
Son un medio para obtener un valor en algún momento en el futuro.
La forma en la que funciona es la siguiente: una función que necesita hacer una acción muy costosa en el tiempo, pone en “ESPERA” dicha acción como un trabajo para hacer y devuelve un objeto Future inmediatamente, de esta forma se consigue no bloquear el hilo de ejecución de DART. Más adelante, cuando el trabajo ha terminado, y el valor está disponible, se dice que el Future se ha completado con dicho valor.
import 'dart:io'; main() { File file = new File("prueba.txt"); Future future = file.readAsString(); future.then((content) { print(content); }); print('Fin del Programa'); }
Tenemos que tener claro que el print “Fin de Programa” se ejecutara primero ya que la lectura del archivo demorara en realizarse. El THEN sera lo que se va a ejecutar al momento de tener el valor FUTURO, en este caso: el contenido del archivo TXT.
Gestión de errores Future
También es posible que el Future retorne un error, para ello tenemos una forma de controlarlo.
import 'dart:io'; main() { File file = new File("prueba.txt"); Future future = file.readAsString(); future.then((content) { print(content); }) .catchError((e) => print(e.toString())); print('Fin del Programa'); }
Async/Await
Las palabras clave async y await le permite escribir código asincrónico que se parece al código síncrono. Por ejemplo, aquí hay un código que usa await para esperar el resultado de una función asincrónica:
await verificarVersion();
Para usar await, el código debe estar en una función asíncrona, una función marcada como async:
Future<String> version() async { String versionActual = await verificarVersion(); return versionActual; }
Recuerde, en este caso, el FUTURE resuelve un valor que luego puede usar. Aqui el ejemplo completo:
import 'dart:io'; main() async { print('La Version Es: ${await version()}'); } Future<String> version() async { String versionActual = await verificarVersion(); return versionActual; } String verificarVersion() { sleep(Duration(seconds: 3)); return 'BETA 1'; }
[…] Existe otro tipo de dato más avanzado llamado FUTURE, quieres saber como se utiliza, ingresa aquí. […]