Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › Provider State
- This topic has 4 replies, 2 voices, and was last updated 4 years, 10 months ago by Stanley Mesa.
-
AuthorPosts
-
January 1, 2022 at 3:28 PM #46738
*notes_grid.dart
final notesProvider = Provider.of<Notes>(context);
List<Note> listNote = notesProvider.notes;lalu setelah itu listNote dimasukkan ke parameter NoteItem
jika ada perubahan pada listNote, kan listener di provider akan aktif.
Dengan aktifnya listener, lalu apa yang terjadi?
Apakah satu class notes_grid itu akan ter-refresh?Jika satu class ter-refresh, maka widget” yang harusnya tidak perlu di refresh juga ikut ter-refresh juga..
Jika benar bahwa satu class ter-refresh, maka sama saja tidak efisien
Apakah benar demikian? Mohon maaf jika salah dan mohon koreksinya
Terimakasih..January 1, 2022 at 4:39 PM #46739AnonymousHai stanley,
Iya benar sekali, jika provider nya tidak kita kasi tau untuk listen:false, maka setiap kali ada perubahan data pada data tersebut, maka provider akan mengupdate 1 state widget dimana dia dilisten.
Oleh karena itu, penting untuk kita pandai dalam memecah” widget kita menjadi bagian kecil.
Sehinga dalam kasus kita pada halaman home_screen, walaupun ada perubahan data pada list note, tetapi yang akan di rebuild hanyala widget notes_grid.Memang kalau kita lihat dalam widget home_screen, manfaat dari provider kurang begitu terlihat, karena dalam 1 layar kita, sebagian besar widgetnya bergantung pada notes_grid. Tapi bagaimana jika dalam 1 layar kita, terdapat berbagai data lain? maka saat itulah provider terasa besar manfaatnya, karena kita bisa mengupdate bagian” yang datanya berubah saja. dan juga dengan provider, kita tidak perlu susah” mengoper banyak parameter ke widget-widget yang berada dibawahnya, karena data pada provider bisa diakses oleh widget mana pun selama widget yang melisten merupakan child dari widget dimana data tersebut diprovide.
January 1, 2022 at 4:45 PM #46740Jika saya wrap widget yang hanya ingin direfresh dengan Consumer,
Apakah hal tersebut bisa memecahkan masalah tersebut?Terimakasih coach
January 1, 2022 at 5:02 PM #46741AnonymousIya stanley kamu bisa membungkus widget yang ingin direfresh dengan consumer.
karena consumer merupakan alternatif dari provider.of yang bisa digunain jika ingin melisten data, tetapi tidak mau meng rebuild widget lain.Jadi misalnya kamu ingin menambahkan widget lain pada widget notes_grid, tetapi tidak mau widget lain ikutan di rebuild hanya karena data pada list note (yang tidak ada hubungannya dengan widget lain) berubah. maka kamu bisa membungkus widget GridView.builder dengan consumer yang melisten data Notes. sehingga dengan begitu saat data pada list note berubah, widget yang akan direbuild hanyala data yang dibungkus oleh consumer.
Kurang lebih akan kelihatan seperti ini codenya jika menggunakan consumer:
Consumer<Notes>( builder: (context, value, child) => GridView.builder( itemCount: value.notes.length, itemBuilder: (ctx, index) => NoteItem( id: value.notes[index].id, ), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, mainAxisSpacing: 8, crossAxisSpacing: 8, ), ), )January 1, 2022 at 5:04 PM #46743Baik Coach Nathan
Terimakasih atas penjelasannya coach.. -
AuthorPosts
- You must be logged in to reply to this topic.