Flutter: multi_select_flutter ถ้าชีวิตต้องเลือก เลือกใช้ package ตัวนี้ก็ไม่เลว
ตรงตัวเลยนะคับ multi select คือ การเลือกหลายๆตัวเลือก ซึ่งใน Flutter ทำได้หลายแบบ แต่หนึ่งในวิธีที่สะดวกคือ การใช้ package ตัวนี้ ซึ่งมีข้อดีที่
- รองรับ FormField แบบ validator ได้ด้วย
- เลือกได้ง่ายๆว่าจะแสดงในรูปแบบไหน ไม่ว่าจะเป็น Dialog, BottomSheet หรือ ChoicChip.
- ทำ Searchable ได้ด้วย
- Designed ไว้แบบมาตรฐานแล้ว ที่เหลือเราก็ไป custom เพิ่มได้เลย
ในการใช้ Lib ตัวนี้จะมี MultiSelect ให้เลือกใช้ได้หลายแบบเลย เช่น
- MultiSelectDialogField
- MultiSelectBottomSheetField
- MultiSelectButtomSheetField with validators
- MultiSelectChipField
- MultiSelectDialogField with initial values
ลองมาเล่นกันดูดีกว่า ซึ่งใน Article นี้จะใช้ lib version นี้นะคับ
multi_select_flutter: ^3.1.8
MultiSelectDialogField()
- เราจะสร้างทดลองสร้าง Dialog ที่ถามว่าคุณมีภาษาโปรแกรมมิ่งอะไรที่เขียนได้บ้าง นั่นคือ
เริ่มจากสร้าง List ของ Languages ขึ้นมาตามลำดับในรูป
2. จากนั้นมาทดลองใช้กันโดยจะใช้ MultiSelectDialogField()
จริงๆแล้วใน MultiSelectDialogField() ยังมี property ให้เลือกได้เลยใช้อีก เช่น
- listType: MultiSelectListType.CHIP,
- selectedItemsTextStyle: TextStyle(color: Colors.black),
- searchable: true,
3. จากนั้นเราก็สามารถทำ multi select ได้ล่ะ
code:
MultiSelectBottomSheetField()
เป็นอีกแบบนึงที่อยากทดลองใช้คับ คือ การย้ายจากที่เป็น Dialog มาเป็น BottomSheet บ้าง
มาดูกันเลย !!! คือ มันง่ายแค่นี้เอง
เพียงแค่เปลี่ยนจาก
class MultiSelectDialogField() มาเป็น MultiSelectBottomSheetField ที่เหลือเหมือนเดิม
ถัดไปเมื่อ lib ตัวนี้สามารถ validate ได้ด้วย key: ดังนั้นจึงสามารถจัดการกับ chip ได้ด้วย โดยในที่นี้จะทดลอง remove chips ที่ได้เลือกไว้แล้วออกไป โดยที่ไม่ต้องเปิด bottomSheet อีกครั้งนึง
ผลลัพธ์จึงออกมาเป็นแบบนี้
Code:
MultiSelectChipField()
อีกแบบนะคับ คือ ChipField() ซึ่งแบบนี้เราจะแสดงเป็น Chip หรือจะตาม widget ที่เรา custom ขึ้นมาก็ได้ ลองดูกันคับ
ใน ChipField() ก็มี properties ให้เราได้ปรับแต่งเช่นกัน
กรณีที่เราต้องการสร้าง Multi select ขึ้นมาเอง ลองดูได้จาก Article นี้เลยคับ