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í. […]