Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › Note yang terakhir saat di pin membuat note yang lain ikut ter pin
Tagged: Praktek Notes
- This topic has 2 replies, 2 voices, and was last updated 4 years, 3 months ago by Vram Adel Handrio.
-
AuthorPosts
-
August 1, 2022 at 8:05 AM #103317
Dear coach…
Menyambung pertanyaan saya saat sesi Consultation class via zoom…adanya note yang saat di pin membuat note yang lain terpin juga…berikut kode saya di github coach.. https://github.com/Vram-AH/aplikasi-notes-flutter ..
Terimakasih sebelumnya coach..
August 1, 2022 at 7:52 PM #103460AnonymousHalo,
barusan saya sudah cobain code kamu, dan masalahnya itu ada di file notes.dart function toggleIsPinned line 69,
ini code nya kamu :Future<void> toggleIsPinned(String? id) async { int index = notes.indexWhere((note) => note.id == id); //code lainnya dimana kamu ubah value isPinned pada variable _notes dengan index dari function notes yang sudah disortir. }disitu kamu menggunakan notes.indexWhere….
notes yang kamu gunaiin itu sebuah function get notes yang kita gunaiin untuk get list notes yang sudah disortir dengan urutan note yang memiliki value isPinned true diurutan awal.function notes yang aku maksut itu yang ini:
List<Note> get notes { List<Note> tempListNote = _notes.where((note) => note.isPinned).toList(); tempListNote.addAll(_notes.where((note) => !note.isPinned).toList()); return tempListNote; }sehingga pada saat menjalankan code ini
notes.indexWhere((note) => note.id == id);
index yang diberikan salah, karena urutannya sudah berbeda. makanya value isPinned yang kita ubah jadi salah
karena index yang salah.
jadi contoh yang seharusnya note dengan id B di list asli (tanpa sortir) itu ada diurutan ke 2, tapi karena kamu menggunakan notes list yang sudah disortir buat mencari indexnya maka kita mendapatkan value 3. sehingga pada saat kita mengubah value isPinnednya yang seharusnya kita mengubah value pada index 2 malah menjadi mengubah note pada index ke 3 yang salah.jadi untuk memperbaikinya
cukup mengubah notes menjadi _notesFuture<void> toggleIsPinned(String? id) async { // menampung atau mencari note dengan id yang sama int index = _notes.indexWhere((note) => note.id == id); //bagian ini yang diubah try { // melakukan validasi if (index >= 0) { _notes[index].isPinned = !_notes[index].isPinned; // ganti tanggal update pada server _notes[index] = _notes[index].copyWith(updatedAt: DateTime.now()); // tambahkan notifier untuk memberi tau widget yang listen ke provider bahwa data sudah berubah notifyListeners(); // panggil fungsi toggleIsPinned pada API sebelum notifyListeners await NoteApi().toggleIsPinned( id, _notes[index].isPinned, _notes[index].updatedAt!); // setelah update toggleIspinned ke API maka akan update toggleIspinned di databaseHelper await DatabaseHelper().toogleIspinned( id, _notes[index].isPinned, _notes[index].updatedAt!, ); } } catch (e) { _notes[index].isPinned = !_notes[index].isPinned; notifyListeners(); return Future.error(e); } }August 2, 2022 at 8:33 AM #103470sudah bisa berjalan coach kode nya…terimakasih banyak coach atas penjelasan nya..
-
AuthorPosts
- You must be logged in to reply to this topic.