^0.13.0'dan ^0.14.0'a
Riverpod'un 0.14.0
sürümünün yayınlanmasıyla birlikte StateNotifierProvider kullanma sözdizimi değişti
(açıklama için https://github.com/rrousseGit/riverpod/issues/341 adresine bakın).
Tüm makaleyi görmek için, aşağıdaki StateNotifier'ı göz önünde bulundurun:
class MyModel {}
class MyStateNotifier extends StateNotifier<MyModel> {
MyStateNotifier(): super(MyModel());
}
Değişiklikler
StateNotifierProvider, StateNotifier'ınızın durum türünde olması gereken ek bir genel parametre alır.
Önceden:
final provider = StateNotifierProvider<MyStateNotifier>((ref) {
return MyStateNotifier();
});Sonra:
final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
return MyStateNotifier();
});StateNotifier'ı almak için artık sadece
myProvider
yerinemyProvider.notifier
okumalısınız:Önceden:
Widget build(BuildContext context, ScopedReader watch) {
MyStateNotifier notifier = watch(provider);
}Sonra:
Widget build(BuildContext context, ScopedReader watch) {
MyStateNotifier notifier = watch(provider.notifier);
}StateNotifier'ın durumunu dinlemek için artık
myProvider.state
yerinemyProvider
okumalısınız:Önceden:
Widget build(BuildContext context, ScopedReader watch) {
MyModel state = watch(provider.state);
}Sonra:
Widget build(BuildContext context, ScopedReader watch) {
MyModel state = watch(provider);
}
Projelerinizi yeni sözdizimine otomatik olarak güncellemek için geçiş aracını kullanma
0.14.0 sürümüyle birlikte, projelerinizi geçirmek için size yardımcı olabilecek bir Riverpod komut satırı aracı yayınlandı.
Komut satırını yükleme
Geçiş aracını yüklemek için şunu çalıştırın:
dart pub global activate riverpod_cli
Artık şu komutu çalıştırabilmelisiniz:
riverpod --help
Kullanım
Artık komut satırı aracı yüklendiğine göre, kullanmaya başlayabiliriz.
- İlk olarak, geçirmek istediğiniz projeyi terminalinizde açın.
- Riverpod'u güncellemeyin. Geçiş aracı, Riverpod sürümünü sizin için güncelleyecektir.
- Projenizin hata içermediğinden emin olun.
- Şunu çalıştırın:
riverpod migrate
Araç, ardından projenizi analiz edecek ve değişiklikler önerecektir. Örneğin, şunu görebilirsiniz:
Widget build(BuildContext context, ScopedReader watch) {
- MyModel state = watch(provider.state);
+ MyModel state = watch(provider);
}
Accept change (y = yes, n = no [default], A = yes to all, q = quit)?
Değişikliği kabul etmek için basitçe y tuşuna basın. Aksi takdirde, reddetmek için n tuşuna basın.