Sobes.tech
Middle

Ako sa používajú streamy vo Flutteri?

sobes.tech AI

Odpoveď od AI

Streamy vo Flutteri sa používajú na prácu s posloupnosťou asynchrónnych udalostí. Sú založené na paradigme reaktívneho programovania a poskytujú spôsob spracovania dát podľa ich príchodu.

Hlavné použitia streamov:

  • Aktualizácie UI: Počúvanie zmien dát (napríklad z sieťových požiadaviek alebo databázy) a automatické aktualizácie widgetov.
  • Komunikácia medzi BLoC/Cubit a UI: BLoC/Cubit používajú Stream (cez StateStreamable) na emitovanie stavov, na ktoré sa UI prihlási.
  • Spracovanie vstupných udalostí: Sledovanie udalostí vstupu (napríklad z textových polí).
  • Práca so WebSocket a ďalšie asynchrónne operácie: Získavanie dát v reálnom čase.

Hlavné koncepty:

  • Stream: Sekvencia asynchrónnych udalostí.
  • StreamController: Riadi stream, umožňuje pridávať dáta (add), chyby (addError) a zatvárať stream (close).
  • StreamSubscription: Objekt reprezentujúci aktívne odberanie na stream. Umožňuje prijímať dáta (onData), spracovávať chyby (onError) a ukončiť stream (onDone).

Príklad použitia s StreamBuilder:

// Predpokladajme, že máme stream, ktorý emituje celé čísla
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<int>(
      stream: countStream, // Prihlásenie na stream
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator(); // Kým stream čaká na dáta
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}'); // Ak nastane chyba
        } else {
          return Text('Count: ${snapshot.data}'); // Zobrazenie posledných dát zo streamu
        }
      },
    );
  }
}

Streamy môžu byť:

  • Single-subscription: Len jeden poslucháč môže byť prihlásený v ktoromkoľvek momente. Pokus o prihlásenie druhého spôsobí chybu.
  • Broadcast: Mnoho poslucháčov sa môže prihlásiť na jeden stream. Dáta sú odosielané všetkým aktívnym poslucháčom.

Na spracovanie streamov sa často používajú operátory z balíka rxdart, ktoré poskytujú bohatý súbor utilít na transformáciu, filtrovanie a spájanie streamov.