Sobes.tech
Middle

Comment utilise-t-on les streams dans Flutter?

sobes.tech IA

Réponse de l'IA

Les flux dans Flutter sont utilisés pour travailler avec des séquences d'événements asynchrones. Ils sont basés sur la paradigme de la programmation réactive et offrent un moyen de traiter les données au fur et à mesure de leur arrivée.

Applications principales des flux:

  • Mises à jour de l'UI: Écouter les changements de données (par exemple, à partir de requêtes réseau ou de bases de données) et mettre à jour automatiquement les widgets.
  • Communication entre BLoC/Cubit et UI: BLoC/Cubit utilisent Stream (via StateStreamable) pour émettre des états, auxquels l'UI s'abonne.
  • Traitement de l'entrée utilisateur: Suivi des événements d'entrée (par exemple, à partir de champs de texte).
  • Travail avec WebSocket et autres opérations asynchrones: Obtention de données en temps réel.

Concepts principaux:

  • Stream: Séquence d'événements asynchrones.
  • StreamController: Gère le flux, permet d'ajouter des données (add), des erreurs (addError) et de fermer le flux (close).
  • StreamSubscription: Objet représentant un abonnement actif au flux. Permet de recevoir des données (onData), de gérer les erreurs (onError) et de terminer le flux (onDone).

Exemple d'utilisation avec StreamBuilder:

// Supposons que nous ayons un flux qui émet des nombres entiers
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<int>(
      stream: countStream, // Nous nous abonnons au flux
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator(); // Pendant que le flux attend des données
        } else if (snapshot.hasError) {
          return Text('Erreur: ${snapshot.error}'); // En cas d'erreur
        } else {
          return Text('Count: ${snapshot.data}'); // Affiche les dernières données du flux
        }
      },
    );
  }
}

Les flux peuvent être:

  • Single-subscription: Un seul écouteur peut être abonné à tout moment. Tenter de s'abonner une deuxième fois provoquera une erreur.
  • Broadcast: Plusieurs écouteurs peuvent s'abonner au même flux. Les données sont envoyées à tous les écouteurs actifs.

Pour traiter les flux, on utilise souvent des opérateurs du paquet rxdart, qui offrent un ensemble riche d'utilitaires pour transformer, filtrer et combiner des flux.