Flutter DropdownButton vs Select

Flutter DropdownButtonselect

1️⃣ DropdownButtonselect 의 연관성

  • HTML에서 select 태그는 드롭다운 목록을 제공하는 요소입니다.
  • Flutter에서 DropdownButton 은 이와 유사한 기능을 수행합니다.
  • 두 요소 모두 사용자가 옵션 목록에서 값을 선택할 수 있도록 합니다.

📌 차이점

특징HTML selectFlutter 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?
  • 설명:
    • onChangednull일 때 대신 표시할 힌트입니다.
  • 예제:
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 은 HTML select 태그와 유사한 기능을 제공하지만, Flutter에서 더욱 강력한 커스터마이징이 가능합니다.
  • 속성을 조합하여 다양한 스타일과 기능을 구현할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *