Provider State

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #46738
    Stanley Mesa
    Participant

      *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..

      #46739
      Anonymous

        Hai 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.

        #46740
        Stanley Mesa
        Participant

          Jika saya wrap widget yang hanya ingin direfresh dengan Consumer,
          Apakah hal tersebut bisa memecahkan masalah tersebut?

          Terimakasih coach

          #46741
          Anonymous

            Iya 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,
                  ),
                ),
              )
            #46743
            Stanley Mesa
            Participant

              Baik Coach Nathan
              Terimakasih atas penjelasannya coach..

            Viewing 5 posts - 1 through 5 (of 5 total)
            • You must be logged in to reply to this topic.
            Shopping cart0
            There are no products in the cart!
            Continue shopping