Flutter ChangeNotifierProvider构建器已弃用


12

我的main.dart中有以下代码:

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

从大约2天前开始,我的visual studio代码显示以下警告:

在此处输入图片说明

所以我不建议使用ChangeNotifierProvider上的builder参数。我到处搜索,但找不到该Builder参数的替代方法。那么如何消除这些警告呢?以下是我flutter --version在Windows 10上使用命令的Flutter版本

> 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

对于任何帮助,在此先感谢

Answers:


30

从提供者版本3.2.0起,“ builder”被标记为“赞成”,而不再支持“ create”。

可以在更改日志中找到更多信息

所以应该做:

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

8

您可以通过create as builder进行传递。

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

        ),
        child: HomePage(),
    );

谢谢您的回答。但我选择@Nuts的答案是因为他的描述更清楚
Dika

3

您可以使用“创建”而不是“生成器”

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

}


请删除您的答案,因为您的答案未在现有答案中添加任何内容。@Tabrizapps
Dika

1

可以使用带有Product()或Index上特定产品的create param来代替builder参数。

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

或可用作超值版本:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.