본문으로 건너뛰기

Flutter 드롭다운 예제

Flutter에서 드롭다운 위젯은 사용자에게 옵션 목록을 제공하는 데 사용됩니다. 이 위젯은 일반적으로 사용자가 선택 목록에서 옵션을 선택해야 하는 양식에서 사용됩니다. 드롭다운 위젯은 사용하기 쉽고 사용자가 옵션을 선택할 수 있는 매끄럽고 직관적인 방법을 제공합니다.

드롭다운 위젯 만들기

Flutter에서 드롭다운 위젯을 만드는 것은 간단합니다. 드롭다운 위젯을 생성하려면 목록에 표시될 옵션을 지정해야 합니다. 다음은 드롭다운 위젯을 만드는 방법의 예입니다.

String dropdownValue = 'One';

DropdownButton<String>(
value: dropdownValue,
icon: Icon(Icons.arrow_downward),
iconSize: 24,
elevation: 16,
style: TextStyle(color: Colors.deepPurple),
underline: Container(
height: 2,
color: Colors.deepPurpleAccent,
),
onChanged: (String newValue) {
setState(() {
dropdownValue = newValue;
});
},
items: <String>['One', 'Two', 'Three', 'Four']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
);

이 예에서는 DropdownButton 위젯이 생성되고 value 매개변수가 dropdownValue로 설정됩니다. items 매개변수는 드롭다운 목록에 표시될 문자열 목록입니다. 'onChanged' 매개변수는 사용자가 목록에서 옵션을 선택할 때 호출될 함수로 설정됩니다.

드롭다운 위젯 사용자 정의

드롭다운 위젯은 앱의 스타일과 디자인에 맞게 사용자 정의할 수 있습니다. 다음은 드롭다운 위젯을 사용자 지정하는 방법에 대한 몇 가지 예입니다.

드롭다운 버튼 아이콘 변경

드롭다운 버튼에 표시되는 아이콘을 변경하려면 icon 매개변수를 사용할 수 있습니다. 다음은 예입니다.

DropdownButton<String>(
value: dropdownValue,
icon: Icon(Icons.arrow_forward),
items: <String>['One', 'Two', 'Three', 'Four']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String newValue) {
setState(() {
dropdownValue = newValue;
});
},
);

이 예에서 icon 매개변수는 Icons.arrow_forward 아이콘이 있는 Icon 위젯으로 설정됩니다.

드롭다운 버튼 색상 변경

드롭다운 버튼의 색상을 변경하려면 style 매개변수를 사용할 수 있습니다. 다음은 예입니다.

DropdownButton<String>(
value: dropdownValue,
style: TextStyle(color: Colors.red),
items: <String>['One', 'Two', 'Three', 'Four']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String newValue) {
setState(() {
dropdownValue = newValue;
});
},
);

이 예에서 style 매개변수는 Colors.red로 설정된 color와 함께 TextStyle 객체로 설정됩니다.

더 많은 예

이것은 플러터 드롭다운 예제입니다. 드롭다운을 통해 하나 이상의 항목을 선택할 수 있습니다. 드롭다운은 일반적으로 gridview 및 listview와 같은 데이터 목록을 표시하는 다른 유형의 위젯보다 작은 공간을 차지합니다.

이 예제에는 종속성이 필요하지 않습니다.

(ㅏ). 메인 다트

이것은 이 프로젝트에서 작성해야 하는 유일한 파일입니다.

가져오기를 추가하여 시작합니다.

import 'package:flutter/material.dart';

material.dart는 드롭다운을 포함하여 사용할 여러 플러터 머티리얼 디자인 구성 요소에 대한 액세스를 제공합니다.

상태 클래스를 확장하여 MyAppState를 만듭니다. MyApp은 상태가 생성되는 사용자 정의 StatefulWidget입니다.

class MyAppState extends State<MyApp> {

이 클래스 내에서 드롭다운에 렌더링될 항목 목록을 정의합니다.

  List _fruits = ["Apple", "Banana", "Pineapple", "Mango", "Grapes"];

그런 다음 드롭다운 메뉴 항목 목록과 선택한 항목을 보관할 문자열을 포함하여 인스턴스 필드를 두 개 더 추가합니다.

  List<DropdownMenuItem<String>> _dropDownMenuItems;
String _selectedFruit;

그런 다음 initState() 클래스를 재정의합니다.



void initState() {
_dropDownMenuItems = buildAndGetDropDownMenuItems(_fruits);
_selectedFruit = _dropDownMenuItems[0].value;
super.initState();
}

다음은 드롭다운 메뉴 항목을 빌드하고 가져오는 방법입니다.

  List<DropdownMenuItem<String>> buildAndGetDropDownMenuItems(List fruits) {
List<DropdownMenuItem<String>> items = new List();
for (String fruit in fruits) {
items.add(new DropdownMenuItem(value: fruit, child: new Text(fruit)));
}
return items;
}

드롭다운 항목을 변경하는 방법은 다음과 같습니다.

    void changedDropDownItem(String selectedFruit) {
setState(() {
_selectedFruit = selectedFruit;
});
}

마지막으로 build() 메서드를 재정의합니다.

    
Widget build(BuildContext context) {
return new MaterialApp(
debugShowCheckedModeBanner: false,
home: new Scaffold(
appBar: new AppBar(
title: new Text("DropDown Button Example"),
),
body: new Container(
child: new Center(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text("Please choose a fruit: "),
new DropdownButton(
value: _selectedFruit,
items: _dropDownMenuItems,
onChanged: changedDropDownItem,
)
],
)),
),
),
);
}

다음은 main.dart의 전체 코드입니다.

import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatefulWidget {

State<StatefulWidget> createState() {
return new MyAppState();
}
}
class MyAppState extends State<MyApp> {
List _fruits = ["Apple", "Banana", "Pineapple", "Mango", "Grapes"];
List<DropdownMenuItem<String>> _dropDownMenuItems;
String _selectedFruit;

void initState() {
_dropDownMenuItems = buildAndGetDropDownMenuItems(_fruits);
_selectedFruit = _dropDownMenuItems[0].value;
super.initState();
}
List<DropdownMenuItem<String>> buildAndGetDropDownMenuItems(List fruits) {
List<DropdownMenuItem<String>> items = new List();
for (String fruit in fruits) {
items.add(new DropdownMenuItem(value: fruit, child: new Text(fruit)));
}
return items;
}
void changedDropDownItem(String selectedFruit) {
setState(() {
_selectedFruit = selectedFruit;
});
}

Widget build(BuildContext context) {
return new MaterialApp(
debugShowCheckedModeBanner: false,
home: new Scaffold(
appBar: new AppBar(
title: new Text("DropDown Button Example"),
),
body: new Container(
child: new Center(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text("Please choose a fruit: "),
new DropdownButton(
value: _selectedFruit,
items: _dropDownMenuItems,
onChanged: changedDropDownItem,
)
],
)),
),
),
);
}
}

데모

데모는 다음과 같습니다.

Flutter 드롭다운 예시

위 코드의 라이센스는 Apache 버전 2.0입니다.

결론

드롭다운 위젯은 사용자에게 옵션 목록을 제공하는 데 사용되는 Flutter의 중요한 위젯입니다. 이 위젯은 사용하기 쉽고 앱의 스타일과 디자인에 맞게 사용자 정의할 수 있습니다. 제공된 예제를 사용하여 앱의 요구 사항을 충족하는 드롭다운 위젯을 만들 수 있습니다.