Middle
როგორ გამოიყენება სტრიმები Flutter-ში?
sobes.tech AI
პასუხი AI-სგან
Flutter-ში სტრიმები გამოიყენება ასინქრონული მოვლენების მიმდევრობის სამუშაოდ. ისინი დაფუძნებულია რეაქტიული პროგრამირების პარადიგმაზე და უზრუნველყოფენ მონაცემების დამუშავების გზას მათ მიღებისას.
სტრიმების ძირითადი გამოყენებები:
- UI განახლებები: მონაცემების ცვლილებების მოსმენა (მაგალითად, ქსელური მოთხოვნებიდან ან მონაცემთა ბაზიდან) და ვიჯეტების ავტომატური განახლება.
- BLoC/Cubit და UI შორის კავშირი: BLoC/Cubit იყენებს
Stream-ს (გავლისStateStreamable-ის საშუალებით) მდგომარეობების გამოსაცემად, რომელზეც UI-ი აბონდება. - მომხმარებლის შეყვანის დამუშავება: შეყვანის მოვლენების მონიტორინგი (მაგალითად, ტექსტური ველებიდან).
- WebSocket და სხვა ასინქრონული ოპერაციები: მონაცემების მიღება რეალურ დროში.
ძირითადი კონცეფციები:
- Stream: ასინქრონული მოვლენების მიმდევრობა.
- StreamController: მართავს სტრიმს, საშუალებას აძლევს მონაცემების დამატებას (
add), შეცდომების (addError) და სტრიმის დახურვას (close). - StreamSubscription: ობიექტი, რომელიც წარმოადგენს აქტიურ გამოწერას სტრიმზე. საშუალებას აძლევს მონაცემების მიღებას (
onData), შეცდომების დამუშავებას (onError) და სტრიმის დასრულებას (onDone).
StreamBuilder-თან გამოყენების მაგალითი:
// განვივითაროთ, რომ გვაქვს სტრიმი, რომელიც გამოსცემს მთელ რიცხვებს
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<int>(
stream: countStream, // გამოწერა სტრიმზე
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); // სანამ სტრიმი მონაცემებს ელოდება
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}'); // თუ მოხდა შეცდომა
} else {
return Text('Count: ${snapshot.data}'); // ბოლო მონაცემების ჩვენება
}
},
);
}
}
სტრიმები შეიძლება იყოს:
- Single-subscription: მხოლოდ ერთი მსმენელი შეიძლება იყოს გამოწერილი ნებისმიერ დროს. მეორე გამოწერა გამოიწვევს შეცდომას.
- Broadcast: მრავალი მსმენელი შეიძლება იყოს გამოწერილი ერთ სტრიმზე. მონაცემები გადაეცემა ყველა აქტიურ მსმენელს.
სტრიმების დამუშავებისთვის ხშირად გამოიყენება rxdart პაკეტის ოპერატორები, რომლებიც უზრუნველყოფენ მდიდარ ინსტრუმენტებს ტრანსფორმაციის, ფილტრაციის და გაერთიანებისათვის.