Flutter DropdownButton 과 select 
1️⃣ DropdownButton 과 select 의 연관성
- HTML에서 
select태그는 드롭다운 목록을 제공하는 요소입니다. - Flutter에서 
DropdownButton은 이와 유사한 기능을 수행합니다. - 두 요소 모두 사용자가 옵션 목록에서 값을 선택할 수 있도록 합니다.
 
📌 차이점
| 특징 | HTML select | Flutter DropdownButton | 
|---|---|---|
| 기본 사용법 | <select> <option> 태그 사용 | DropdownButton 위젯 사용 | 
| UI 커스터마이징 | 제한적 (CSS 활용) | 완전한 커스터마이징 가능 | 
| 이벤트 처리 | onchange 속성 사용 | onChanged 콜백 함수 사용 | 
2️⃣ DropdownButton 모든 요소 (속성 및 함수)
1. DropdownButton 생성자
DropdownButton<T>({
  super.key,
  required List<DropdownMenuItem<T>>? items,
  T? value,
  void Function(T?)? onChanged,
  Widget? hint,
  Widget? disabledHint,
  Color? dropdownColor,
  bool isExpanded = false,
  double? iconSize,
  Color? iconEnabledColor,
  Color? iconDisabledColor,
  bool isDense = false,
  double? itemHeight,
  AlignmentGeometry alignment = AlignmentDirectional.centerStart,
  bool autofocus = false,
  BorderRadius? borderRadius,
})
3️⃣ 속성 (Properties) 상세 설명
1) items (드롭다운 목록 아이템)
- 타입: 
List<DropdownMenuItem<T>>? - 설명:
- 드롭다운 리스트에 표시될 옵션 목록입니다.
 - 각 항목은 
DropdownMenuItem<T>위젯으로 생성해야 합니다. 
 - 예제:
 
DropdownButton<String>(
  items: [
    DropdownMenuItem(value: "apple", child: Text("사과")),
    DropdownMenuItem(value: "banana", child: Text("바나나")),
  ],
  onChanged: (value) {
    print("선택된 값: $value");
  },
);
2) value (현재 선택된 값)
- 타입: 
T? - 설명:
- 드롭다운 버튼에서 현재 선택된 값을 설정합니다.
 items목록 내 값 중 하나여야 합니다.
 - 예제:
 
String selectedValue = "apple";
DropdownButton<String>(
  value: selectedValue,
  items: [
    DropdownMenuItem(value: "apple", child: Text("사과")),
    DropdownMenuItem(value: "banana", child: Text("바나나")),
  ],
  onChanged: (newValue) {
    selectedValue = newValue!;
  },
);
3) onChanged (값 변경 시 실행)
- 타입: 
void Function(T?)? - 설명:
- 사용자가 새로운 값을 선택하면 실행되는 콜백 함수입니다.
 
 - 예제:
 
DropdownButton<String>(
  onChanged: (newValue) {
    print("새로운 선택: $newValue");
  },
);
4) hint (선택 전 표시할 힌트)
- 타입: 
Widget? - 설명:
- 아무것도 선택되지 않았을 때 표시할 힌트 위젯입니다.
 
 - 예제:
 
DropdownButton<String>(
  hint: Text("과일을 선택하세요"),
);
5) disabledHint (비활성화 시 힌트)
- 타입: 
Widget? - 설명:
onChanged가null일 때 대신 표시할 힌트입니다.
 - 예제:
 
DropdownButton<String>(
  disabledHint: Text("선택 불가능"),
  onChanged: null,
);
6) dropdownColor (드롭다운 배경색)
- 타입: 
Color? - 설명:
- 드롭다운 메뉴의 배경색을 변경합니다.
 
 - 예제:
 
DropdownButton<String>( dropdownColor: Colors.blueAccent, );
7) isExpanded (드롭다운 너비 확장)
- 타입: 
bool - 설명:
true로 설정하면 버튼 너비가 부모 위젯에 맞춰 확장됩니다.
 - 예제:
 
DropdownButton<String>( isExpanded: true, );
8) iconSize (아이콘 크기)
- 타입: 
double? - 설명:
- 드롭다운 버튼의 화살표 아이콘 크기를 설정합니다.
 
 - 예제:
 
DropdownButton<String>( iconSize: 30, );
9) iconEnabledColor (활성화 아이콘 색상)
- 타입: 
Color? - 설명:
- 활성 상태일 때 드롭다운 아이콘의 색상을 지정합니다.
 
 - 예제:
 
DropdownButton<String>( iconEnabledColor: Colors.green, );
10) iconDisabledColor (비활성화 아이콘 색상)
- 타입: 
Color? - 설명:
- 비활성 상태일 때 드롭다운 아이콘의 색상을 지정합니다.
 
 - 예제:
 
DropdownButton<String>( onChanged: null, iconDisabledColor: Colors.grey, );
11) isDense (높이 조정)
- 타입: 
bool - 설명:
true로 설정하면 버튼의 높이가 줄어듭니다.
 - 예제:
 
DropdownButton<String>( isDense: true, );
12) itemHeight (항목 높이)
- 타입: 
double? - 설명:
- 각 드롭다운 메뉴 항목의 높이를 조정합니다.
 
 - 예제:
 
DropdownButton<String>( itemHeight: 50, );
13) alignment (정렬)
- 타입: 
AlignmentGeometry - 설명:
- 버튼 내 텍스트 및 아이콘의 정렬을 설정합니다.
 
 - 예제:
 
DropdownButton<String>( alignment: Alignment.centerRight, );
14) autofocus (자동 포커스 여부)
- 타입: 
bool - 설명:
true로 설정하면 화면이 열릴 때 드롭다운 버튼이 자동으로 포커스를 받습니다.
 - 예제:
 
DropdownButton<String>( autofocus: true, );
15) borderRadius (모서리 둥글기)
- 타입: 
BorderRadius? - 설명:
- 드롭다운 메뉴의 모서리를 둥글게 만들 수 있습니다.
 
 - 예제:
 
DropdownButton<String>( borderRadius: BorderRadius.circular(10), );
🔹 정리
DropdownButton은 HTMLselect태그와 유사한 기능을 제공하지만, Flutter에서 더욱 강력한 커스터마이징이 가능합니다.- 속성을 조합하여 다양한 스타일과 기능을 구현할 수 있습니다.
 
