CodeBlanks Logo Icon CodeBlanks

Bloc nedir?

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 -> state

Bloc 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

main.dart
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

main.dart
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

Soru
class SayacBloc extends Bloc<SayacEvent, ____> {
  // ...
}
Cevap
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

Orta seviye bölümündeki tüm dersler