Junior
Na čo sa používajú streamy vo Flutteri?
sobes.tech AI
Odpoveď od AI
Streamy vo Flutter sa používajú na spracovanie sekvencií asynchrónnych udalostí.
Hlavné prípady použitia:
- Reagovanie na zmeny v dátach: Redux, BLoC vzory používajú streamy na správu stavu aplikácie a reaktívne aktualizácie UI pri zmenách.
- Práca s dátami v toku: Získavanie dát cez sieť (napríklad WebSocket), čítanie zo súborov, práca so senzormi zariadenia.
- Spracovanie interakcií používateľa: Sledovanie rolovania, Draggable / DragTarget.
- Asynchrónne operácie: Vykonávanie úloh na pozadí a získavanie výsledkov, keď sú pripravené.
Kľúčové pojmy:
- Stream: Sekvencia asynchrónnych udalostí. Stream môže emitovať 0 alebo viac udalostí a potom skončiť (s úspechom alebo chybou).
- StreamSubscription: Predstavuje odber na stream. Umožňuje prijímať udalosti zo streamu a spravovať odber (pozastaviť, pokračovať, zrušiť).
- Sink: Používa sa na pridanie dát do streamu.
- StreamBuilder: Widget, ktorý sa rekonštruuje pri prijímaní nových dát zo streamu.
// Príklad použitia StreamBuilder
StreamBuilder<int>(
stream: counterStream, // Váš stream
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
if (snapshot.hasError) {
return Text('Chyba: \\${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Čaká sa...');
case ConnectionState.waiting:
return CircularProgressIndicator();
case ConnectionState.active:
return Text('Hodnota: \\${snapshot.data}');
case ConnectionState.done:
return Text('Stream ukončený. Posledná hodnota: \\${snapshot.data}');
}
},
)
// Príklad jednoduchého streamu, ktorý emituje čísla
Stream<int> countStream(int max) async* {
for (int i = 0; i <= max; i++) {
await Future.delayed(Duration(seconds: 1));
yield i; // Emisie hodnoty
}
}