Je soupçonne que ma compréhension de la Stream
à Dart pourrait présenter quelques lacunes...
J'ai une situation dans laquelle j'aimerais qu'une application Dart réponde à des entrées intermittentes (ce qui suggère immédiatement l'utilisation de Streams
ou Future
peut-être). Je peux mettre en œuvre le comportement que je souhaite avec auditeur mais je me demandais comment le faire d'une manière plus efficace et plus Dart. esque manière.
À titre d'exemple simple, le programme suivant (fonctionnel) écoute les saisies clavier de l'utilisateur et ajoute au document un élément div contenant ce qui a été tapé depuis l'espace précédent, chaque fois que la barre d'espacement est actionnée.
import 'dart:html';
main() {
listenForSpaces(showInput);
}
void listenForSpaces(void Function(String) listener) {
var input = List<String>();
document.onKeyDown.listen((keyboardEvent) {
var key = keyboardEvent.key;
if (key == " ") {
listener(input.join());
input.clear();
} else {
input.add(key.length > 1 ? "[$key]" : key);
}
});
}
void showInput(String message) {
document.body.children.add(DivElement()..text = message);
}
Ce que j'aimerais pouvoir faire, c'est créer un nouveau fichier Stream
de la Stream
que j'écoute (dans l'exemple ci-dessus, pour créer un nouveau fichier Stream
de onKeyDown
). En d'autres termes, je pourrais définir le programme ci-dessus comme suit :
var myStream = ...
myStream.listen(showInput);
Je soupçonne qu'il existe un moyen de créer un Stream
et ensuite, à différents moments et endroits, y insérer des éléments ou lui demander d'émettre une valeur : j'ai l'impression de passer à côté de quelque chose de simple. En tout état de cause, toute aide ou orientation vers une documentation serait appréciée.