Je voudrais exécuter une fonction avec un certain délai aléatoire / dynamique. Future.delayed peut vous aider, mais cela a pris du temps car const . Je ne parviens pas à transmettre une expression ou une valeur non const en temps. Existe-t-il un moyen de le paramétrer ou de le rendre aléatoire? Ainsi, chaque délai d'appel sera différent.
Future.delayed(const Duration(milliseconds: needRandomNumberHere), () {
// code will be here
});
3 Réponses :
Veuillez consulter ceci pour voir comment pour générer des nombres aléatoires en fléchettes. Ce que vous pouvez faire est de générer un nombre aléatoire, puis de le transmettre au champ millisecondes ou même aux secondes dans le Durée .
Abba.m génère un nombre aléatoire n'est pas un problème. En fait, la durée n'accepte que const et random n'est pas un const .
Comme précisé dans la réponse de creativecreatorormaybenot, le const est en fait facultatif
Utilisez la classe aléatoire de Dart:
int nextInt (int max)
Génère un entier aléatoire non négatif uniformément distribué dans la plage de 0, inclus, à max, exclusif.
Donc, dans votre code:
import 'dart:math';
Future.delayed(Duration(milliseconds: Random().nextInt(3000)), () {
// code will be here
});
exécutera le code après un temps aléatoire entre 0 et 3000 millisecondes.
Vous pouvez simplement utiliser n'importe quelle variable, comme d'autres l'ont montré ici.
Vous ne comprenez pas bien le const dans ce contexte.
Il n'y a aucun moyen de forcer const dans Dart - c'est toujours facultatif. Vous ne pouvez vous forcer à utiliser const qu'en le déclarant de cette façon.
Future.delayed(Duration(milliseconds: Random().nextInt(420)), () {
// code will be here
});
Comme vous pouvez le voir, const est facultatif.
Cela signifie que ce qui suit fonctionnera parfaitement:
Future.delayed(Duration(milliseconds: 42), () {
// code will be here
});
// does the exact same as:
Future.delayed(const Duration(milliseconds: 42), () {
// code will be here
});
Oui, tu as raison. Une fois que j'ai supprimé le mot-clé const , son travail.