Flutter ChangeNotifierProvider builder è obsoleto


12

Ho questo codice nel mio main.dart:

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

da circa 2 giorni fa, il mio codice di Visual Studio mostra questo avviso:

inserisci qui la descrizione dell'immagine

quindi immagino che il parametro builder su ChangeNotifierProvider sia obsoleto. Ho cercato dappertutto ma non trovo alternativa a questo parametro del builder. Quindi, come rimuovere questi avvisi? Di seguito è la mia versione flutter usando il flutter --versioncomando su 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

Per qualsiasi aiuto, grazie in anticipo

Risposte:


31

Poiché il provider versione 3.2.0 "builder" è contrassegnato come obsoleto in favore di "create".

Ulteriori informazioni sono disponibili nel registro delle modifiche

Quindi dovrebbe fare:

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

8

puoi passare con create come builder.

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

        ),
        child: HomePage(),
    );

La ringrazio per la risposta. ma scelgo la risposta di @Nuts perché la sua descrizione è più chiara
Dika,

4

puoi usare "create" anziché "builder"

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

}


cancella la tua risposta, perché la tua risposta non aggiunge nulla alle risposte esistenti. @Tabrizapps
Dika,

1

Invece del parametro builder è possibile utilizzare create param con Product () o prodotto specifico su Index.

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

O può essere utilizzato come versione Value:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.