Pembuat Flutter ChangeNotifierProvider sudah usang


12

Saya memiliki kode ini di main.dart saya:

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

sejak sekitar 2 hari yang lalu, kode studio visual saya menampilkan peringatan ini:

masukkan deskripsi gambar di sini

jadi saya kira parameter builder di ChangeNotifierProvider sudah usang. Saya mencari di mana-mana tetapi tidak dapat menemukan alternatif untuk parameter pembangun ini. Jadi bagaimana cara menghapus peringatan ini? Di bawah ini adalah versi flutter saya menggunakan flutter --versionperintah pada 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

Untuk bantuan apa pun, terima kasih sebelumnya

Jawaban:


31

Karena penyedia versi 3.2.0 "builder" ditandai sebagai usang karena "buat".

Info lebih lanjut dapat ditemukan di log perubahan

Jadi harus dilakukan:

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

8

Anda dapat lulus dengan create sebagai builder.

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

        ),
        child: HomePage(),
    );

Terima kasih atas jawaban Anda. tapi saya memilih jawaban @Nuts karena deskripsinya lebih jelas
Dika

4

Anda dapat menggunakan "buat" bukan "pembangun"

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

}


harap hapus jawaban Anda, karena jawaban Anda tidak menambahkan apa pun ke jawaban yang ada. @Tabrizapps
Dika

1

Alih-alih parameter builder Anda dapat menggunakan create param dengan Product () atau produk tertentu di Index.

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

Atau dapat digunakan sebagai versi Nilai:

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.