Der Builder Flutter ChangeNotifierProvider ist veraltet

12

Ich habe diesen Code in meinem main.dart:

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

Seit ungefähr 2 Tagen zeigt mein Visual Studio-Code diese Warnung:

Geben Sie hier die Bildbeschreibung ein

Ich denke, der Builder-Parameter für ChangeNotifierProvider ist veraltet. Ich habe überall gesucht, kann aber keine Alternative zu diesem Builder-Parameter finden. Wie entferne ich diese Warnung? Unten ist meine Flatterversion mit dem flutter --versionBefehl unter 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

Für jede Hilfe danke im Voraus

Dika
quelle

Antworten:

31

Seit Provider Version 3.2.0 ist "Builder" zugunsten von "create" als veraltet markiert.

Weitere Informationen finden Sie im Änderungsprotokoll

Also sollte tun:

ChangeNotifierProvider(create: (context) => Auth())
Nüsse
quelle
8

Sie können mit create als Builder übergeben.

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

        ),
        child: HomePage(),
    );
Khadga Shrestha
quelle
Vielen Dank für Ihre Antwort. aber ich wähle die Antwort von @Nuts, weil seine Beschreibung klarer ist
Dika
4

Sie können "create" anstelle von "builder" verwenden.

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

}}

Tabrizapps
quelle
Bitte löschen Sie Ihre Antwort, da Ihre Antwort den vorhandenen Antworten nichts hinzufügt. @ Fabrizapps
Dika
1

Anstelle von Builder-Parametern können Sie create Parameter mit Product () oder einem bestimmten Produkt bei Index verwenden.

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

Oder kann als Value-Version verwendet werden:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Avijit Nagare
quelle