BlocProvider
- Flutter kursu
- Orta seviye
- Ders 18/99
- 4 dk
BlocProvider ile Cubit'i ağaca sağlamayı öğrenirsin.
BlocProvider
BlocProvider, bir Cubit veya Bloc'u widget ağacına sağlar. create parametresi Cubit örneğini üreten fonksiyonu alır.
BlocProvider<SayacCubit>(
create: (_) => SayacCubit(),
child: Ekrani(),
)Cubit, ağaçtan çıkınca otomatik kapatılır.
create ve child
create BlocProvider ilk kez ihtiyaç duyulduğunda çağrılır. child ise provider'ın altındaki widget ağacıdır.
BlocProvider<SayacCubit>(
create: (_) => SayacCubit(),
child: MaterialApp(home: Ekrani()),
)Cubit'in yaşam döngüsü provider tarafından yönetilir.
Uygulama BlocProvider ile Cubit sağla
BlocProvider<SayacCubit> ile Cubit'i ağaca sağla. create ile yeni SayacCubit() örneği oluştur. main içinde print('uygulama başladı') çağır.
Başlangıç kodu
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class SayacCubit extends Cubit<int> {
SayacCubit() : super(0);
}
void main() {
print('uygulama başladı');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// BlocProvider ile SayacCubit sağla
return MaterialApp(
home: Ekrani(),
);
}
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: Text('ekran')));
}
}Örnek çözüm
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class SayacCubit extends Cubit<int> {
SayacCubit() : super(0);
}
void main() {
print('uygulama başladı');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider<SayacCubit>(
create: (_) => SayacCubit(),
child: MaterialApp(
home: Ekrani(),
),
);
}
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: Text('ekran')));
}
}Beklenen çıktı
uygulama başladı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 BlocProvider'ın create'i ne zaman çağrılır?
- Uygulama kapandığında
- Her build sırasında
- BlocProvider ilk kez ihtiyaç duyulduğunda Doğru cevap
- Yalnızca hata durumunda
Açıklama: BlocProvider'ın create fonksiyonu, provider ilk kez ihtiyaç duyulduğunda çağrılır ve Cubit örneğini üretir.
2 BlocProvider'a Cubit tipini ver
BlocProvider<____>(
create: (_) => SayacCubit(),
child: Ekrani(),
)
BlocProvider<SayacCubit>(
create: (_) => SayacCubit(),
child: Ekrani(),
)
Açıklama: BlocProvider'ın tip parametresi sağlanan Cubit sınıfıdır; SayacEvent veya SayacState değil.
3 BlocProvider parçaları
| Kavram | Anlamı |
|---|---|
BlocProvider |
Cubit'i ağaca sağlar |
create |
İlk ihtiyaçta Cubit üretir |
child |
Provider'ın alt widget ağacı |
close |
Cubit dispose edilince çağrılır |