Middle
Kā tiek izmantoti straumi Flutter?
sobes.tech AI
Atbilde no AI
Flutter sērijas tiek izmantotas darbam ar asinhronām notikumu secēm. Tās balstītas uz reaktīvās programmēšanas paradigmu un nodrošina veidu datu apstrādei to saņemšanas brīdī.
Galvenās sēriju izmantošanas jomas:
- UI atjauninājumi: Datu izmaiņu klausīšanās (piemēram, no tīkla pieprasījumiem vai datu bāzes) un automātiska vidgetu atjaunināšana.
- Saites veidošana starp BLoC/Cubit un UI: BLoC/Cubit izmanto
Stream(caurStateStreamable) stāvokļu emitēšanai, uz kurām UI ir abonēts. - Lietotāja ievades notikumu apstrāde: Notikumu uzraudzība (piemēram, no teksta laukiem).
- Darbs ar WebSocket un citām asinhronajām operācijām: Datu saņemšana reāllaikā.
Galvenās koncepcijas:
- Stream: Asinhronu notikumu secība.
- StreamController: Pārvalda sēriju, ļauj pievienot datus (
add), kļūdas (addError) un aizvērt sēriju (close). - StreamSubscription: Objekts, kas pārstāv aktīvu abonēšanu uz sēriju. Atļauj saņemt datus (
onData), apstrādāt kļūdas (onError) un pabeigt sēriju (onDone).
Piemērs ar StreamBuilder:
// Pieņemsim, mums ir sērija, kas emitē veselus skaitļus
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<int>(
stream: countStream, // Pierakstīšanās uz sēriju
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); // Kamēr sērija gaida datus
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}'); // Ja notiek kļūda
} else {
return Text('Count: ${snapshot.data}'); // Rāda pēdējos datus no sērijas
}
},
);
}
}
Sērijas var būt:
- Single-subscription: Tikai viens klausītājs var būt abonēts jebkurā laikā. Mēģinājums abonēt otru radīs kļūdu.
- Broadcast: Daudzi klausītāji var būt abonēti vienai sērijai. Dati tiek nosūtīti visiem aktīvajiem klausītājiem.
Lai apstrādātu sērijas, bieži tiek izmantoti rxdart pakotnes operatori, kas nodrošina bagātīgu rīku komplektu sēriju transformācijai, filtrēšanai un apvienošanai.