O construtor Flutter ChangeNotifierProvider foi descontinuado


12

Eu tenho esse código no meu main.dart:

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

desde cerca de 2 dias atrás, meu código do visual studio mostrando este aviso:

insira a descrição da imagem aqui

então, acho que o parâmetro do construtor no ChangeNotifierProvider está obsoleto. Procurei em todos os lugares, mas não consigo encontrar alternativa para esse parâmetro do construtor. Então, como remover esses avisos? Abaixo está a minha versão do flutter usando o flutter --versioncomando no 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

Para qualquer ajuda, obrigado antecipadamente

Respostas:


31

Desde a versão 3.2.0 do provedor, "construtor" está marcado como reprovado em favor de "criar".

Mais informações podem ser encontradas no log de alterações

Então deve fazer:

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

8

você pode passar com create como construtor.

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

        ),
        child: HomePage(),
    );

Obrigado pela sua resposta. mas eu escolho resposta @Nuts' porque sua descrição é clara
Dika

4

você pode usar "create" em vez de "builder"

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

}


exclua sua resposta, porque ela não adiciona nada às respostas existentes. @Tabrizapps
Dika

1

Em vez do parâmetro do construtor, você pode usar create param com Product () ou produto específico no Index.

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

Ou pode ser usado como versão Value:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.