Junior — Middle
Ποια μέθοδοι μπορούν να χρησιμοποιηθούν για την υλοποίηση ροής δεδομένων σε Dart;
sobes.tech AI
Απάντηση από AI
Στη Dart, για την υλοποίηση ροών δεδομένων (streams), μπορούν να χρησιμοποιηθούν διάφορες προσεγγίσεις:
- Stream και StreamController — ο βασικός τρόπος εργασίας με τις ροές. Το
StreamControllerεπιτρέπει τη δημιουργία μιας ροής στην οποία μπορούν να προστεθούν γεγονότα, και τοStreamείναι η ίδια η ροή στην οποία μπορεί κανείς να εγγραφεί.
final controller = StreamController<int>();
controller.stream.listen((data) {
print('Λήφθηκε: $data');
});
controller.add(1);
controller.add(2);
controller.close();
- Ασύγχρονοι γεννήτορες (async)* — επιτρέπουν τη δημιουργία ροών δεδομένων μέσω μιας συνάρτησης που επιστρέφει
Streamκαι χρησιμοποιεί τη λέξη-κλειδίyieldγια την έκδοση τιμών.
Stream<int> countStream(int to) async* {
for (int i = 1; i <= to; i++) {
yield i;
await Future.delayed(Duration(seconds: 1));
}
}
countStream(3).listen(print);
- Χρήση έτοιμων ροών από βιβλιοθήκες — π.χ.,
Stream.periodicγια περιοδικά γεγονότα.
Έτσι, οι βασικές μέθοδοι είναι η χρήση του StreamController για τη δημιουργία και διαχείριση ροών και των ασύγχρονων γεννητόρων για τη δημιουργία ροών με λογική παραγωγής δεδομένων.