Saltar al contenido

¿Cuál es la diferencia entre Future.delayed vs Timer en flutter?

Te recomendamos que pruebes esta respuesta en un entorno controlado antes de pasarlo a producción, saludos.

Solución:

Un par de diferencias para mí.

  • Future.of devuelve un futuro.
  • Timer no devuelve nada.

Entonces si tu código retrasado devuelve todo lo que necesita para continuar con su trabajo, Future es el camino a seguir.


Otra diferencia es que el Timer La clase proporciona una forma de disparar repetidamente.

Esta cita es de la propia documentación de referencia de clase de temporizador

Un temporizador de cuenta regresiva que se puede configurar para disparar una vez o repetidamente

Y ejemplo a utilizar Timer con el repetir podría ser

Timer.periodic(Duration(seconds: 5), (timer) 
    print(DateTime.now()); 
);

Otro ejemplo frecuente es crear un cronógrafopara medir los tiempos en su código, generalmente se ve usando un Timer.

GL!!

Temporizador:

Timer() crea un Timer objeto, que ejecuta su cálculo después de un retraso. Ya que obtienes la referencia a eso Timer objeto, puede optar por cancelarlo antes de que se dispare, llamando cancel.

Timer t = Timer(Duration(seconds: 1), () => print("1 sec later"));
t.cancel(); // nothing will be printed out

Futuro:

Future.delayed crea un Future que ejecuta su cálculo después de un retraso. Internamente, todavía está usando un Timer Para hacer eso. No te expone el temporizador, por lo que no puedes controlarlo ni cancelarlo. En el lado positivo, puedes hacer tus cosas normales de Future, como await en eso.

await Future.delayed(Duration(seconds: 1);
print("1 sec later");

Utilice el temporizador si:

  • Desea la posibilidad de cancelarlo. Con Timer.cancel() cancelas el temporizador a diferencia de Future donde tendrás que hacer uso de CancelableCompleter para cancelar el Futuro.

  • Si no desea devolver nada en su método de devolución de llamada.

    Ejemplo:

    // Prints 'Hello' after 1s. 
    var timer = Timer(Duration(seconds: 1), () => print('Hello'));
    

    Y en caso de que decidas cancelarlo, usa:

    timer.cancel();
    

Use Futuro si:

  • Su código puede arrojar errores y desea detectarlos. ¿Habías usado Timer y se produce alguna excepción no detectada, la aplicación se cerrará.

  • Desea devolver algo desde su método de devolución de llamada.

    Ejemplo:

    // Return 'Hello' after 1s and if there is any error, it will be caught. 
    Future
      .delayed(Duration(seconds: 1), () => 'Hello')
      .catchError((err) ); 
    

Reseñas y calificaciones de la guía

Más adelante puedes encontrar las explicaciones de otros creadores, tú todavía tienes el poder mostrar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *