Sobes.tech
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.