ChangeNotifierProvider
- Flutter kursu
- Orta seviye
- Ders 8/99
- 4 dk
ChangeNotifierProvider ile modeli ağaca sağlamayı öğrenirsin.
ChangeNotifierProvider
ChangeNotifierProvider, bir ChangeNotifier modelini widget ağacına sağlar. create parametresi modeli üreten fonksiyonu alır ve model otomatik olarak yönetilir.
ChangeNotifierProvider<SayacModeli>(
create: (_) => SayacModeli(),
child: MaterialApp(home: Ekrani()),
)Model, ağaçtan çıktığında otomatik dispose edilir.
create ve child
create, provider ilk kez ihtiyaç duyulduğunda çağrılır ve ChangeNotifier örneğini döndürür. child ise provider'ın altındaki widget ağacıdır.
ChangeNotifierProvider<SayacModeli>(
create: (_) => SayacModeli(),
child: Ekrani(),
)Modelin yaşam döngüsü provider tarafından yönetilir.
Uygulama ChangeNotifierProvider ile model sağla
ChangeNotifierProvider<SayacModeli> ile modeli ağaca sağla. create ile yeni SayacModeli() örneği oluştur. main içinde print('uygulama açıldı') çağır.
Başlangıç kodu
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
print('uygulama açıldı');
runApp(MyApp());
}
class SayacModeli extends ChangeNotifier {
int deger = 0;
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// ChangeNotifierProvider ile SayacModeli 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:provider/provider.dart';
void main() {
print('uygulama açıldı');
runApp(MyApp());
}
class SayacModeli extends ChangeNotifier {
int deger = 0;
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<SayacModeli>(
create: (_) => SayacModeli(),
child: MaterialApp(
home: Ekrani(),
),
);
}
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('ekran')),
);
}
}Beklenen çıktı
uygulama açıldı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ChangeNotifierProvider'ın create parametresi ne yapar?
- Modeli üreten fonksiyonu tanımlar Doğru cevap
- Hot reload tetikler
- Yalnızca widget'ı boyar
- Uygulamayı yeniden başlatır
Açıklama: create parametresi, ChangeNotifierProvider ilk kez ihtiyaç duyulduğunda model örneğini üreten fonksiyonu alır.
2 ChangeNotifierProvider'ın create'ini tamamla
ChangeNotifierProvider<SayacModeli>(
____: (_) => SayacModeli(),
child: Ekrani(),
)
ChangeNotifierProvider<SayacModeli>(
create: (_) => SayacModeli(),
child: Ekrani(),
)
Açıklama: ChangeNotifierProvider'ın create parametresi, model örneğini üreten fonksiyonu alır.
3 ChangeNotifierProvider parçaları
| Kavram | Anlamı |
|---|---|
ChangeNotifierProvider |
ChangeNotifier'ı ağaca sağlayan widget |
create |
Model örneğini üreten fonksiyon |
child |
Provider'ın altındaki widget ağacı |
dispose |
Model ağaçtan çıkınca çağrılır |