Konstruktor Flutter ChangeNotifierProvider jest przestarzały

12

Mam ten kod w mojej main.dart:

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

od około 2 dni temu mój kod studia wizualnego pokazuje to ostrzeżenie:

wprowadź opis zdjęcia tutaj

więc wydaje mi się, że parametr konstruktora na ChangeNotifierProvider jest przestarzały. Szukałem wszędzie, ale nie mogę znaleźć alternatywy dla tego parametru konstruktora. Jak więc usunąć te ostrzeżenia? Poniżej moja wersja trzepotania za pomocą flutter --versionpolecenia w systemie Windows 10

> 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

Za wszelką pomoc z góry dziękuję

Dika
źródło

Odpowiedzi:

30

Od wersji 3.2.0 „builder” dostawcy jest oznaczony jako przestarzały na rzecz „create”.

Więcej informacji można znaleźć w dzienniku zmian

Więc należy zrobić:

ChangeNotifierProvider(create: (context) => Auth())
Orzechy
źródło
8

możesz przekazać, tworząc jako budowniczy.

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

        ),
        child: HomePage(),
    );
Khadga shrestha
źródło
Dziękuję za Twoją odpowiedź. ale wybieram odpowiedź @Nuts, ponieważ jego opis jest jaśniejszy
Dika
3

możesz użyć „Utwórz” zamiast „Konstruktora”

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

}

Tabrizapps
źródło
usuń swoją odpowiedź, ponieważ twoja odpowiedź nie dodaje niczego do istniejących odpowiedzi. @Tabrizapps
Dika
1

Zamiast parametru konstruktora można użyć opcji tworzenia parametru z Product () lub określonego produktu w Index.

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

Lub może być użyty jako wersja Value:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Avijit Nagare
źródło