Flutter ChangeNotifierProvider не поддерживается


12

У меня есть этот код в моем main.dart:

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

Примерно 2 дня назад код моей визуальной студии показывал это предупреждение:

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

поэтому я думаю, что параметр построителя на 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

За любую помощь, спасибо заранее

Ответы:


31

Начиная с версии провайдера 3.2.0 «строитель» помечается как устаревший в пользу «создания».

Более подробную информацию можно найти в журнале изменений

Так и надо сделать:

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

8

Вы можете пройти с создателем как строитель.

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

        ),
        child: HomePage(),
    );

Спасибо за ваш ответ. но я выбираю ответ @Nuts, потому что его описание яснее
Дика

4

Вы можете использовать «создать» вместо «строитель»

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

}


пожалуйста, удалите свой ответ, потому что ваш ответ не добавляет ничего к существующим ответам. @Tabrizapps
Дика

1

Вместо параметра builder вы можете использовать команду create с 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.