Flutter
ChangeNotifierProvider
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.
Örnek çözümü göster
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')),
);
}
}
Kendini test et
-
ChangeNotifierProvider'ın create parametresi ne yapar?
- Modeli üreten fonksiyonu tanımlar
- Hot reload tetikler
- Yalnızca widget'ı boyar
- Uygulamayı yeniden başlatır
Cevabı göster
Modeli üreten fonksiyonu tanımlar — create parametresi, ChangeNotifierProvider ilk kez ihtiyaç duyulduğunda model örneğini üreten fonksiyonu alır.
-
ChangeNotifierProvider'ın create'ini tamamla
ChangeNotifierProvider<SayacModeli>(
____: (_) => SayacModeli(),
child: Ekrani(),
)
Cevabı göster
ChangeNotifierProvider<SayacModeli>(
create: (_) => SayacModeli(),
child: Ekrani(),
)
-
ChangeNotifierProvider parçaları
- 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
Sıradaki ders: context.watch ve read