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ę

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())

8

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

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

        ),
        child: HomePage(),
    );

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(),
   ),
 );

}


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(),
      ),
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.