Comme le rappelle le site du langage Dart, un stream est un moyen de recevoir une séquence d’événements. Les événements transmis sont dits asynchrones c’est à dire que les données n’arrivent pas de manière régulières, continues ou en direct.
Pour expliquer cela on peut prendre l’exemple d’un robinet. Soit il est ouvert soit il est fermé. L’eau circule de manière aléatoire, puisqu’à certains moments on peut décider d’augmenter le flux d’eau ou simplement fermer le robinet pendant plusieurs heures. Il n’y a pas de régularité.
Il a deux types de de streams: les « single-subscription » streams et les « broadcast » stream.
Il commence à envoyer des événements dès qu’il est écouté et arrête lorsqu’il n’est plus écouté. Il ne peut être écouté qu’une fois par un seul listener sinon on obtient une erreur.
Les broadcast streams permettent plusieurs listeners. Les listeners ajoutés au moment de l’apparition d’un événement ne recevra pas l’événement.
Plusieurs méthodes permettent de gérer le flux du stream.
On peut surveiller le cas
Ce stream on va pouvoir soit le mettre en pause, le faire reprendre ou bien l’annuler. Voici les 3 méthodes:
Une fois que nous avons notre stream, nous pouvons effectuer certaines tâches à chaque apparition d’un événement. Par exemple
NumberCreator().stream .map((i) => 'String §i') .listen(print);
Ici à chaque événement on va utiliser les int du stream pour les convertir en String et puis ensuite pour imprimer ce que le stream dit.