Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › Mapping TYPE
- This topic has 3 replies, 2 voices, and was last updated 4 years, 6 months ago by Anonymous.
-
AuthorPosts
-
April 16, 2022 at 11:43 AM #49392
siang coach,
saya ada json yg tak buat jadi list type 2
ada type <Keyword> dan type <Key>{ "keyword": [ { "id": "66", "genre_id": "5", "keyword": "Hijab Printing", "status_id": "2", "created_at": "2022-03-12 15:59:36", "updated_at": "2022-03-12 15:59:36" }, { "id": "67", "genre_id": "5", "keyword": "Hijab Custom", "status_id": "2", "created_at": "2022-03-12 15:59:36", "updated_at": "2022-03-12 15:59:36" } ], "key": [ { "id": "26", "user_id": "36196", "keyword_id": "26" }, { "id": "27", "user_id": "36196", "keyword_id": "27" } ] }nah saya mau buat select option chip pakai package multi_select_flutter
seperti berikut,Column( children: <Widget>[ MultiSelectDialogField<respEdit.Keyword>( buttonIcon: Icon(Icons.arrow_drop_down, color: Colors.grey.shade600), key: _multiSelectKey, decoration: BoxDecoration( border: Border.all( color: Colors.grey, width: 1, ), borderRadius: BorderRadius.circular(8), ), initialValue: e.dataIdentitasEdit.keyword.toList(), listType: MultiSelectListType.CHIP, searchable: true, buttonText: Text( "Keyword", style: tBodyText.copyWith(), ), title: Text("PILIH 5 KEYWORD", style: tBodyText.copyWith()), itemsTextStyle: tBodyText.copyWith(), selectedItemsTextStyle: tBodyText.copyWith(color: Colors.white), selectedColor: secondaryColors, confirmText: Text("OK", style: tBodyText.copyWith()), cancelText: Text("CANCEL", style: tBodyText.copyWith()), // items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Key>(e, e.deskripsiKey)).toList(), items: e.dataIdentitasEdit.keyword.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.keyword)).toList(), validator: (values) { if (values!.length > 5) { return "Maksimal 5"; } return null; }, autovalidateMode: AutovalidateMode.onUserInteraction, onConfirm: (values) { _multiSelectKey.currentState?.validate(); var check = _multiSelectKey.currentState?.validate(); if (check == false) { } else { print(values); _selectedKeyword = values; } }, chipDisplay: MultiSelectChipDisplay( chipColor: secondaryColors, textStyle: tBodyText.copyWith(color: Colors.white), items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.keyword)).toList(), onTap: (value) {}, ), ), ], ),nah masalahnya ada di bagian chip displaynya
chipDisplay: MultiSelectChipDisplay( chipColor: secondaryColors, textStyle: tBodyText.copyWith(color: Colors.white), items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.keyword)).toList(), onTap: (value) {}, ),di bagian items harusnya mengambil data dari list<Key> tetapi karena MultiSelectDialogField itu merajuk ke list<Keyword>
bagaimana cara mapping agar list<Key> bisa masuk ke list<Keyword> di bagian items chipDisplay
terimakasih,
April 16, 2022 at 3:28 PM #49403AnonymousHai Setiawan,
Maksutnya bagaiman kah? kamu mau mapping agar list key sesuai dengan list keyword?
jadi misal isi dari key nya keyword_id = 15, kamu mau sesuaiin/ambil nilai dari keyowrd yang memiliki id 15 kah?April 16, 2022 at 5:51 PM #49409kan saya mau buat multiple selection dengan dua list type
list<keyword> adalah semua daftar pilihan, sementara
list<key> adalah daftar yg sudah dipilih,nah saya mau memasukkan value list<key> kedalam
items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.keyword)).toList(),tetapi ada pesan error
The getter ‘keyword’ isn’t defined for the type ‘Key’.
Try importing the library that defines ‘keyword’, correcting the name to the name of an existing getter, or defining a getter or field named ‘keyword’.gimana coach cara ngakalin case ini? intinya saya mau memasukkan list<key> kedalam items tadi
April 18, 2022 at 9:31 PM #49448AnonymousHi Setiawan,
Dari code dan error yang diberikan aku dapat simpulkan bahwa error tersebut disebakan karena variable Key pada dataIdentitasEdit tidak mempunyai variable/data keyword. Jika kamu mau menampilkan nilai keyword dari variable keyword maka berdasarkan data JSON yang kamu kasi
{ "keyword": [ { "id": "66", "genre_id": "5", "keyword": "Hijab Printing", "status_id": "2", "created_at": "2022-03-12 15:59:36", "updated_at": "2022-03-12 15:59:36" }, { "id": "67", "genre_id": "5", "keyword": "Hijab Custom", "status_id": "2", "created_at": "2022-03-12 15:59:36", "updated_at": "2022-03-12 15:59:36" } ], "key": [ { "id": "26", "user_id": "36196", "keyword_id": "26" }, { "id": "27", "user_id": "36196", "keyword_id": "27" } ] }data dari variable key berisi keyword_id yang merupakan nilai id dari data keyword, nah dari itu kamu bisa ngemapping variable Key untuk mengambil/membaca data dari keyword berdasarkan keyword_id. contohnya seperti ini:
items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.dataIdentitasEdit.keyword.firstWhere((element) => element.id == e.keywordId).keyword)).toList(),kalau mau lebih rapi bagian
e.dataIdentitasEdit.keyword.firstWhere((element) => element.id == e.keywordId).keyworddijadiin sebuah function pada class/object dataIdentitasEdit. sehingga nanti bisa dipersingkat codenya menjadi ini
items: e.dataIdentitasEdit.key.map((e) => MultiSelectItem<respEdit.Keyword>(e, e.dataIdentitasEdit.findKeywordById(e.keywordId).keyword)).toList(),Semoga menjawab permasalahannya.
-
AuthorPosts
- You must be logged in to reply to this topic.