Usare gli Stream in Dart

Mattepuffo's logo
Usare gli Stream in Dart

Usare gli Stream in Dart

Uno stream in Dart è sostanzialmente una sequenza di eventi che rappresentano dei valori che arriveranno in maniera asincrona.

Che detto così vuol dire poco o nulla in realtà....

Quindi in questo articolo vediamo qualche esempio in modo da capire.

Cominciamo con il più basico:

final stream = Stream.value('MATTEPUFFO');
stream.listen((ev) => print(ev));

Volendo possiamo visualizzare un evento in fase di fine o di errore:

final stream = Stream.value('MATTEPUFFO');
stream.listen(
	(ev) => print(ev),
	onDone: () => print('FATTO'),
	onError: (error) => print(error.toString()),
);

Possiamo anche crearlo a partire da una lista:

  Stream.fromIterable(['nome 1', 'nome 2', 'nome 3']).listen(
    print,
    onError: print,
    onDone: () => print('FATTO'),
  );

Un'altra cosa interessante è la possibilità di creare degli eventi periodici:

  Stream.periodic(Duration(seconds: 5), (int i) {
    if (i % 2 == 0) {
      return 'OK';
    } else {
      return 'KO';
    }
  }).listen(
    print,
    onError: print,
    onDone: () => print('FATTO'),
  );

Come ultimo esempio vi propongo la possibilità di creare uno Stream da Future:

  Future<String> ftTest() async {
    return 'CIAO';
  }

  Stream.fromFuture(ftTest()).listen(
    print,
    onError: print,
    onDone: () => print('FATTO'),
  );

Enjoy!


Condividi

Commentami!