Bloc nedir?
- Flutter kursu
- Orta seviye
- Ders 16/99
- 4 dk
Bloc'un event -> state akışını nasıl yönettiğini öğrenirsin.
Bloc nedir?
Bloc (Business Logic Component), gelen event'leri yeni state'lere dönüştüren bir state yönetim kütüphanesidir. Event'ler Bloc'a gönderilir, Bloc bunları işler ve ortaya çıkan state'i yayınlar. Bu tek yönlü akış state değişikliklerini öngörülebilir kılar.
event -> Bloc -> stateBloc sayesinde iş mantığı arayüzden ayrılır.
Event ve State akışı
Bir Bloc, on<Event> ile event'leri dinler ve emit ile yeni state üretir. State bir Stream olarak yayınlanır; dinleyen widget'lar her yeni state'te güncellenir.
on<Artir>((event, emit) {
emit(SayacState(state.deger + 1));
});Bu akış test edilebilir ve izlenebilirdir.
Uygulama SayacBloc sınıfını tanımla
SayacBloc sınıfını Bloc<SayacEvent, SayacState>'ten türet. on<Artir> ile event'i dinle ve emit ile yeni state üret. main'de print('bloc hazır') çağır.
Başlangıç kodu
import 'package:flutter_bloc/flutter_bloc.dart';
abstract class SayacEvent {}
class Artir extends SayacEvent {}
class SayacState {
final int deger;
SayacState(this.deger);
}
// SayacBloc, Bloc<SayacEvent, SayacState>'ten türetilsin
void main() {
print('bloc hazır');
}Örnek çözüm
import 'package:flutter_bloc/flutter_bloc.dart';
abstract class SayacEvent {}
class Artir extends SayacEvent {}
class SayacState {
final int deger;
SayacState(this.deger);
}
class SayacBloc extends Bloc<SayacEvent, SayacState> {
SayacBloc() : super(SayacState(0)) {
on<Artir>((event, emit) {
emit(SayacState(state.deger + 1));
});
}
}
void main() {
print('bloc hazır');
}Beklenen çıktı
bloc hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bloc neyi neye dönüştürür?
- Widget'ları state'lere
- State'leri widget'lara
- Event'leri state'lere Doğru cevap
- State'leri event'lere
Açıklama: Bloc gelen event'leri işler ve karşılık gelen state'leri üretir. Bu tek yönlü akış event -> state şeklindedir.
2 Bloc sınıf imzasını tamamla
class SayacBloc extends Bloc<SayacEvent, ____> {
// ...
}
class SayacBloc extends Bloc<SayacEvent, SayacState> {
// ...
}
Açıklama: Bloc iki tip parametresi alır: event tipi ve state tipi. İkinci parametre state sınıfıdır.
3 Bloc parçaları
| Kavram | Anlamı |
|---|---|
Bloc |
Event'leri state'lere dönüştürür |
Event |
Bloc'a gönderilen değişiklik isteği |
State |
Bloc'un ürettiği durum |
emit |
Yeni state yayınlama yöntemi |