Junior — Middle
Μπορείτε να εξηγήσετε τον μηχανισμό λειτουργίας του μοτίβου BLoC στη διαχείριση της κατάστασης της εφαρμογής;
sobes.tech AI
Απάντηση από AI
Το πρότυπο BLoC (Business Logic Component) χρησιμοποιείται στο Flutter για τη διαχείριση της κατάστασης της εφαρμογής, διαχωρίζοντας τη λογική επιχειρήσεων από το UI.
Η κύρια ιδέα είναι η χρήση ροών (Streams) για τη μεταφορά γεγονότων και καταστάσεων:
- Γεγονότα (Events): ενέργειες χρήστη ή εξωτερικά γεγονότα αποστέλλονται στο BLoC.
- Επεξεργασία: το BLoC λαμβάνει τα γεγονότα, εκτελεί τη λογική επιχειρήσεων και σχηματίζει μια νέα κατάσταση.
- Καταστάσεις (States): τα ενημερωμένα δεδομένα επιστρέφονται μέσω της ροής, στην οποία εγγράφεται το UI.
Αυτό επιτρέπει τον πιο modular, δοκιμαστικό και εύχρηστο κώδικα.
Παραδείγματος χάριν, ένα απλοποιημένο BLoC:
class CounterBloc {
final _eventController = StreamController<void>();
final _stateController = StreamController<int>();
int _count = 0;
StreamSink<void> get eventSink => _eventController.sink;
Stream<int> get stateStream => _stateController.stream;
CounterBloc() {
_eventController.stream.listen((_) {
_count++;
_stateController.sink.add(_count);
});
}
void dispose() {
_eventController.close();
_stateController.close();
}
}
Το UI εγγράφεται στο stateStream και στέλνει γεγονότα στο eventSink, το BLoC ενημερώνει την κατάσταση και ειδοποιεί το UI.