ProviderScope
- Flutter kursu
- Orta seviye
- Ders 14/99
- 4 dk
ProviderScope ile kök sarmalama yapmayı öğrenirsin.
ProviderScope
ProviderScope, uygulamanın kökünü sarmalayan ve tüm provider'ların yaşam döngüsünü yöneten widget'tır. runApp çağrısının en dışında bulunur.
void main() {
runApp(ProviderScope(child: MyApp()));
}Her provider bu scope içinde yaşar.
Scope ve yaşam döngüsü
ProviderScope, içindeki tüm provider'ların yaşam döngüsünü yönetir. Uygulama kapatıldığında provider'lar dispose edilir. Birden fazla scope kullanılabilir; en yakın olan geçerli olur.
ProviderScope(
overrides: [],
child: MyApp(),
)overrides ile provider'lar test için geçersiz kılınabilir.
Uygulama ProviderScope ile isim göster
isimP adında Provider<String> tanımla ve 'Riverpod' döndürsün. ProviderScope ile kökü sar. Ekrani ConsumerWidget'ında ref.watch(isimP) ile değeri al ve göster. main içinde print('başladı') çağır.
Başlangıç kodu
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// isimP: Provider<String> 'Riverpod'
void main() {
print('başladı');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Ekrani());
}
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: Text('?')));
}
}Örnek çözüm
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final isimP = Provider<String>((ref) => 'Riverpod');
void main() {
print('başladı');
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Ekrani());
}
}
class Ekrani extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final isim = ref.watch(isimP);
return Scaffold(body: Center(child: Text(isim)));
}
}Beklenen çıktı
başladı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ProviderScope ne zaman kullanılır?
- Sadece StatelessWidget'larda
- Yalnızca hata ayıklama modunda
- Uygulamanın kökünde, runApp çağrısının en dışında Doğru cevap
- Yalnızca test sırasında
Açıklama: ProviderScope runApp çağrısının en dışında bulunur ve tüm provider'ların yaşam döngüsünü yönetir.
2 ProviderScope'a overrides geç
void main() {
runApp(ProviderScope(
____: [isimP.overrideWithValue('Test')],
child: MyApp(),
));
}
void main() {
runApp(ProviderScope(
overrides: [isimP.overrideWithValue('Test')],
child: MyApp(),
));
}
Açıklama: ProviderScope'un overrides parametresi, test için provider'ları geçersiz kılmaya yarar.
3 ProviderScope parçaları
| Kavram | Anlamı |
|---|---|
ProviderScope |
Uygulama kökünü sarmalayan widget |
runApp |
Uygulamayı başlatan fonksiyon |
overrides |
Test için provider'ları geçersiz kılar |
scope |
Provider'ların yaşadığı ortam |