Search
Duplicate

flutter_multi_select_items

flutter_multi_select_items
๋‹ค์ค‘ ์„ ํƒ ์œ„์ ฏ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ Flutter ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.
โ€ข
๋‹ค๋ฃจ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
โ€ข
๋†’์€ ์ˆ˜์ค€์˜ ๋งž์ถค ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
flutter_multi_select
CodeFoxLk

flutter_multi_select_items ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋…

Multi Select = ์—ฌ๋Ÿฌ ๊ฐœ ์„ ํƒ
์˜ˆ:
โ€ข
์ทจ๋ฏธ ์„ ํƒ โ†’ ์šด๋™, ์Œ์•…, ์˜ํ™”, ์—ฌํ–‰
โ€ข
์Œ์‹ ์„ ํƒ โ†’ ํ”ผ์ž, ์น˜ํ‚จ, ํ–„๋ฒ„๊ฑฐ
โ€ข
๊ธฐ์ˆ  ์Šคํƒ ์„ ํƒ โ†’ Flutter, Spring, Django
โ€ข
ํ•„ํ„ฐ ์„ ํƒ โ†’ ๊ฐ€๊ฒฉ, ๊ฑฐ๋ฆฌ, ํ‰์ 
์ฒดํฌ๋ฐ•์Šค ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค UI๊ฐ€ ํ›จ์”ฌ ์˜ˆ์จ

์„ค์น˜ ๋ฐฉ๋ฒ•

dependencies: flutter_multi_select_items: ^0.4.2
YAML
๋ณต์‚ฌ
flutter pub get
Bash
๋ณต์‚ฌ
import 'package:flutter_multi_select_items/flutter_multi_select_items.dart';
Dart
๋ณต์‚ฌ

๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

MultiSelectContainer( items: [ MultiSelectCard(value: 'Flutter', label: 'Flutter'), MultiSelectCard(value: 'Spring', label: 'Spring'), MultiSelectCard(value: 'Django', label: 'Django'), ], onChange: (allSelectedItems, selectedItem) { print(allSelectedItems); }, )
Dart
๋ณต์‚ฌ

์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

MultiSelectContainer

์ „์ฒด ์„ ํƒ UI ์ปจํ…Œ์ด๋„ˆ

MultiSelectCard

์„ ํƒํ•  ๊ฐ๊ฐ์˜ ์•„์ดํ…œ ๋ฒ„ํŠผ

onChange

์„ ํƒ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์‹คํ–‰
onChange: (allSelectedItems, selectedItem) { print("์ „์ฒด ์„ ํƒ: $allSelectedItems"); print("๋ฐฉ๊ธˆ ์„ ํƒ: $selectedItem"); }
Dart
๋ณต์‚ฌ
๋ณ€์ˆ˜
์„ค๋ช…
allSelectedItems
์ „์ฒด ์„ ํƒ๋œ ๋ฆฌ์ŠคํŠธ
selectedItem
๋ฐฉ๊ธˆ ์„ ํƒ/ํ•ด์ œ๋œ ์•„์ดํ…œ

์ „์ฒด ์˜ˆ์ œ

class MultiSelectExample extends StatefulWidget { State<MultiSelectExample> createState() => _MultiSelectExampleState(); } class _MultiSelectExampleState extends State<MultiSelectExample> { List<String> selectedItems = []; Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("๋ฉ€ํ‹ฐ ์„ ํƒ ์˜ˆ์ œ")), body: Column( children: [ MultiSelectContainer( items: [ MultiSelectCard(value: '์šด๋™', label: '์šด๋™'), MultiSelectCard(value: '์˜ํ™”', label: '์˜ํ™”'), MultiSelectCard(value: '์—ฌํ–‰', label: '์—ฌํ–‰'), MultiSelectCard(value: '๋…์„œ', label: '๋…์„œ'), ], onChange: (allSelectedItems, selectedItem) { setState(() { selectedItems = List<String>.from(allSelectedItems); }); }, ), SizedBox(height: 20), Text("์„ ํƒ๋œ ํ•ญ๋ชฉ: ${selectedItems.join(', ')}"), ], ), ); } }
Dart
๋ณต์‚ฌ

๋””์ž์ธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

MultiSelectContainer( itemsDecoration: MultiSelectDecorations( decoration: BoxDecoration( color: Colors.grey[200], borderRadius: BorderRadius.circular(10), ), selectedDecoration: BoxDecoration( color: Colors.blue, borderRadius: BorderRadius.circular(10), ), ), items: [ MultiSelectCard(value: 'A', label: 'A'), MultiSelectCard(value: 'B', label: 'B'), ], )
Dart
๋ณต์‚ฌ

๊ฐ„๊ฒฉ ์กฐ์ •

MultiSelectContainer( spacing: 10, runSpacing: 10, items: [...] )
Dart
๋ณต์‚ฌ
์˜ต์…˜
์„ค๋ช…
spacing
๊ฐ€๋กœ ๊ฐ„๊ฒฉ
runSpacing
์„ธ๋กœ ๊ฐ„๊ฒฉ

์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ

๊ด€์‹ฌ์‚ฌ ์„ ํƒ ํ™”๋ฉด

โ€ข
์šด๋™
โ€ข
์—ฌํ–‰
โ€ข
์Œ์•…
โ€ข
์˜ํ™”
โ€ข
๋…์„œ
โ€ข
๊ฒŒ์ž„

์Œ์‹ ์„ ํƒ

โ€ข
ํ•œ์‹
โ€ข
์ค‘์‹
โ€ข
์ผ์‹
โ€ข
์–‘์‹
โ€ข
ํŒจ์ŠคํŠธํ‘ธ๋“œ

๊ธฐ์ˆ  ์Šคํƒ ์„ ํƒ

โ€ข
Flutter
โ€ข
React
โ€ข
Spring
โ€ข
Django
โ€ข
Node.js
ํšŒ์›๊ฐ€์ž… ์ถ”๊ฐ€ ์ •๋ณด ์ž…๋ ฅ ํ™”๋ฉด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ

Checkbox vs MultiSelect ๋น„๊ต

Checkbox
MultiSelect
์„ธ๋กœ ๋ฆฌ์ŠคํŠธ
ํƒœ๊ทธ ํ˜•ํƒœ
๊ณต๊ฐ„ ๋งŽ์ด ์‚ฌ์šฉ
๊ณต๊ฐ„ ํšจ์œจ
๊ธฐ๋ณธ UI
์ปค์Šคํ…€ UI
๋‹จ์ˆœ ์„ค์ •
๋””์ž์ธ ์•ฑ์— ์ ํ•ฉ
์š”์ฆ˜ ์•ฑ UI โ†’ MultiSelect ๋งŽ์ด ์‚ฌ์šฉ

ํ•œ์ค„ ์ •๋ฆฌ

flutter_multi_select_items = ํƒœ๊ทธ ๋ฒ„ํŠผ ํ˜•ํƒœ๋กœ ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์›ํ•˜๋ฉด ๋‹ค์Œ ๊ฐ•์˜๋…ธํŠธ๋„ ์ด์–ด์„œ ์ •๋ฆฌํ•ด์ค„๊ฒŒ:
โ€ข
table_calendar
โ€ข
flutter_slidable
โ€ข
file_picker
โ€ข
image_picker
โ€ข
sqflite
โ€ข
hive
โ€ข
shared_preferences