Le générateur Flutter ChangeNotifierProvider est obsolète

12

J'ai ce code dans mon main.dart:

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

depuis environ 2 jours, mon code de studio visuel affiche cet avertissement:

entrez la description de l'image ici

donc je suppose que le paramètre de générateur sur ChangeNotifierProvider est obsolète. J'ai cherché partout mais je ne trouve pas d'alternative à ce paramètre de générateur. Alors, comment supprimer ces avertissements? Ci-dessous est ma version flutter en utilisant la flutter --versioncommande sur 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

Pour toute aide, merci d'avance

Dika
la source

Réponses:

31

Depuis la version 3.2.0 du fournisseur, "builder" est marqué comme obsolète au profit de "create".

Plus d'informations peuvent être trouvées dans le journal des modifications

Il faut donc faire:

ChangeNotifierProvider(create: (context) => Auth())
Des noisettes
la source
8

vous pouvez passer avec create as builder.

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

        ),
        child: HomePage(),
    );
Khadga shrestha
la source
Merci pour votre réponse. mais je choisis la réponse de @Nuts parce que sa description est plus claire
Dika
4

vous pouvez utiliser "créer" au lieu de "constructeur"

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

}

Tabrizapps
la source
veuillez supprimer votre réponse, car votre réponse n'ajoute rien aux réponses existantes. @Tabrizapps
Dika
1

Au lieu du paramètre de générateur, vous pouvez utiliser create param avec Product () ou un produit spécifique à Index.

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

Ou peut être utilisé comme version Value:

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