Flutter ChangeNotifierProvider oluşturucu kullanımdan kaldırıldı


12

Bu kodu benim main.dart var:

main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(builder: (context) => Auth()), // /**problem here. builder displayed with strikethrough line**/
      ],
      child: App(),
    ),
  );
}

yaklaşık 2 gün önce, görsel stüdyo kodum şu uyarıyı gösteriyor:

resim açıklamasını buraya girin

bu yüzden sanırım ChangeNotifierProvider üzerindeki builder parametresi kullanımdan kaldırıldı. Her yerde aradım ama bu builder parametresine alternatif bulamıyorum. Peki bu uyarı nasıl kaldırılır? Aşağıda flutter --versionWindows 10'da komutu kullanan çarpıntı sürümüm

> flutter --version
Flutter 1.9.1+hotfix.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 68587a0916 (3 months ago)2019-09-13 19:46:58 -0700
Engine • revision b863200c37
ToolsDart 2.5.0

Herhangi bir yardım için şimdiden teşekkürler

Yanıtlar:


31

Sağlayıcı sürüm 3.2.0 "builder", "create" lehine kullanımdan kaldırılmış olarak işaretlendiğinden.

Değişiklik günlüğünde daha fazla bilgi bulunabilir

Öyleyse yapmalı:

ChangeNotifierProvider(create: (context) => Auth())

8

builder olarak create ile geçebilirsiniz.

    return Provider<MyProvider>(
        create: (context) => MyProvider(

        ),
        child: HomePage(),
    );

Cevabınız için teşekkür ederim. ama açıklaması daha net olduğu için @Nuts'un cevabını seçiyorum
Dika

4

"oluşturucu" yerine "oluştur" kullanabilirsiniz

main() {
 runApp(
   MultiProvider(
     providers: [
       ChangeNotifierProvider(create: (context) => Auth()), // /**problem here. 
builder displayed with strikethrough line**/
     ],
     child: App(),
   ),
 );

}


lütfen cevabınızı silin, çünkü cevabınız mevcut cevaplara hiçbir şey eklemiyor. Tabrizapps
Dika

1

Builder parametresi yerine Product () veya Index'teki belirli bir ürünle create param kullanabilirsiniz .

itemBuilder: (ctx, i) => ChangeNotifierProvider(
        create: (context) => products[i],
        child:  ProductItem(),
      ), 

Veya Değer sürümü olarak kullanılabilir:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.