Junior
Milleks Flutteris voogusid kasutatakse?
sobes.tech AI
Vastus AI-lt
Flutter kasutab vooge (streams) asünkroonsete sündmuste jada töötlemiseks:
Peamised kasutusjuhtumid:
- Andmete muutustele reageerimine: Redux, BLoC-mudelid kasutavad vooge rakenduse oleku haldamiseks ja reaktiivseks kasutajaliidese uuendamiseks muutuste ajal:
- Voolandmete töötlemine: Võrguandmete saamine (näiteks WebSocket), failidest lugemine, seadme sensoritega töötamine:
- Kasutajaliidese interaktsioonide töötlemine: Kerimise jälgimine, Draggable / DragTarget:
- Asünkroonsed toimingud: Tööde taustal tegemine ja tulemuste saamine nende valmisoleku ajal:
Peamised mõisted:
- Stream: Asünkroonsete sündmuste jada. Voog võib emiteerida 0 või rohkem sündmusi ning seejärel lõpetada (õnnestunult või veaga):
- StreamSubscription: Esindab tellimust voogule. Võimaldab saada sündmusi voost ja hallata tellimust (peatada, jätkata, tühistada):
- Sink: Kasutatakse andmete lisamiseks voogu:
- StreamBuilder: Vidin, mis rekonstrueerub uute andmete saamisel voost:
// Näide kasutades StreamBuilderit
StreamBuilder<int>(
stream: counterStream, // Teie voog
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
if (snapshot.hasError) {
return Text('Viga: ${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Ootamine...');
case ConnectionState.waiting:
return CircularProgressIndicator();
case ConnectionState.active:
return Text('Väärtus: ${snapshot.data}');
case ConnectionState.done:
return Text('Voog lõppes. Viimane väärtus: ${snapshot.data}');
}
},
)
// Lihtne voognäide, mis emiteerib numbreid
Stream<int> countStream(int max) async* {
for (int i = 0; i <= max; i++) {
await Future.delayed(Duration(seconds: 1));
yield i; // Emiteeri väärtus
}
}