[flutter] DropdownButton 위젯의 아이템에 뱃지 추가하기

Flutter 앱을 개발할 때 DropdownButton 위젯은 사용자가 여러 옵션 중 하나를 선택할 수 있도록 하는데 유용합니다. 기본적으로 DropdownButton의 아이템은 텍스트로 표시됩니다. 하지만 때로는 이 텍스트 외에도 각 아이템에 추가 정보를 표시해야 하는 경우가 있습니다. 이를 해결하기 위해서는 DropdownButton의 아이템에 뱃지를 추가할 수 있습니다.

이 포스트에서는 Flutter에서 DropdownButton 위젯의 아이템에 뱃지를 어떻게 추가하는지 알아보겠습니다.

1. DropdownButton 위젯

DropdownButton 위젯은 DropdownMenuItem 목록 중에서 하나를 선택할 수 있는 드롭다운 버튼을 제공합니다. 각 DropdownMenuItem는 일반적으로 문자열 값을 포함합니다.

DropdownButton<String>(
  value: _selectedItem,
  onChanged: (String? newValue) {
    setState(() {
      _selectedItem = newValue!;
    });
  },
  items: <String>['Option 1', 'Option 2', 'Option 3']
      .map<DropdownMenuItem<String>>((String value) {
    return DropdownMenuItem<String>(
      value: value,
      child: Text(value),
    );
  }).toList(),
)

위의 코드에서 DropdownButton 위젯은 문자열 값을 표시하는 DropdownMenuItem 목록을 가지고 있습니다.

2. DropdownButton 위젯의 아이템에 뱃지 추가하기

각 DropdownMenuItem에 추가 정보를 표시하려면 DropdownButton 위젯의 items 속성에 들어가는 DropdownMenuItem를 다르게 구성해야 합니다. 뱃지를 추가하기 위해서는 DropdownMenuItem의 child 속성에 Row나 ListTile과 같은 위젯들을 이용하여 뱃지를 추가할 수 있습니다.

DropdownButton<String>(
  value: _selectedItem,
  onChanged: (String? newValue) {
    setState(() {
      _selectedItem = newValue!;
    });
  },
  items: <DropdownMenuItem<String>>[
    DropdownMenuItem<String>(
      value: 'Option 1',
      child: Row(
        children: <Widget>[
          SizedBox(
            width: 50,
            child: Icon(Icons.star, color: Colors.yellow),
          ),
          Text('Option 1'),
        ],
      ),
    ),
    DropdownMenuItem<String>(
      value: 'Option 2',
      child: ListTile(
        leading: Icon(Icons.circle, color: Colors.blue),
        title: Text('Option 2'),
      ),
    ),
    ...
  ],
)

위의 코드에서 첫 번째 DropdownMenuItem에는 Row 위젯을 사용하여 아이콘과 텍스트를 함께 표시하고, 두 번째 DropdownMenuItem에는 ListTile 위젯을 활용하여 아이콘을 왼쪽에, 텍스트를 오른쪽에 표시하는 방법을 보여줍니다.

이제 DropdownButton 위젯을 통해 각 아이템에 뱃지를 추가하는 방법을 알게 되었습니다. 이를 통해 사용자가 추가 정보를 쉽게 확인할 수 있도록 할 수 있습니다.

더 많은 방법과 유용한 기능을 알아보려면 공식 Flutter 문서를 참고해보세요.

Happy coding!