Trình tạo Flutter ChangeNotifierProvider không được dùng nữa


12

Tôi có mã này trong main.dart của mình:

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

kể từ khoảng 2 ngày trước, mã studio hình ảnh của tôi hiển thị cảnh báo này:

nhập mô tả hình ảnh ở đây

vì vậy tôi đoán tham số trình xây dựng trên ChangeNotifierProvider không được dùng nữa. Tôi đã tìm kiếm ở khắp mọi nơi nhưng không thể tìm thấy thay thế cho tham số trình tạo này. Vậy làm thế nào để loại bỏ những cảnh báo này? Dưới đây là phiên bản rung của tôi bằng cách sử dụng flutter --versionlệnh trên 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

Đối với bất kỳ trợ giúp, cảm ơn trước

Câu trả lời:


31

Vì phiên bản nhà cung cấp 3.2.0, "trình xây dựng" được đánh dấu là không dùng cho "tạo".

Thông tin thêm có thể được tìm thấy trong nhật ký thay đổi

Vậy nên làm:

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

8

bạn có thể vượt qua với tạo như là người xây dựng.

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

        ),
        child: HomePage(),
    );

Cảm ơn bạn vì câu trả lời. nhưng tôi chọn câu trả lời của @Nuts vì mô tả của anh ấy rõ ràng hơn
Dika

4

bạn có thể sử dụng "tạo" thay vì "trình xây dựng"

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

}


vui lòng xóa câu trả lời của bạn, bởi vì câu trả lời của bạn không thêm bất cứ điều gì vào câu trả lời hiện có. @Tabrizapps
Dika

1

Thay vì tham số của trình tạo, bạn có thể sử dụng tạo param với Product () hoặc sản phẩm cụ thể tại Index.

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

Hoặc có thể được sử dụng làm phiên bản Giá trị:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.