Flutter ChangeNotifierProvider builder застарілий


12

Я маю цей код у своєму main.dart:

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

приблизно з 2 днів тому мій візуальний код студії із цим попередженням:

введіть тут опис зображення

тому я гадаю, що параметр builder у ChangeNotifierProvider застарілий. Я шукав всюди, але не можу знайти альтернативу цьому параметру програми. Тож як видалити ці попередження? Нижче наведена моя флетер-версія за допомогою flutter --versionкоманди в 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

За будь-яку допомогу, заздалегідь дякую

Відповіді:


30

Оскільки версія 3.2.0 постачальника, "builder" позначається як устарений на користь "create".

Більше інформації можна знайти в журналі змін

Так слід зробити:

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

8

ви можете перейти із створенням як будівельник.

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

        ),
        child: HomePage(),
    );

Спасибі за вашу відповідь. але я вибираю відповідь @Nuts, оскільки його опис чіткіший
Діка

3

ви можете використовувати "create" замість "builder"

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

}


видаліть свою відповідь, оскільки ваша відповідь нічого не додає до існуючих відповідей. @Tabrizapps
Dika

1

Замість параметра builder ви можете використовувати параметр create param з Product () або конкретним продуктом в Index.

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

Або можна використовувати як версію значення:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.