ExpansionPanel
은 Flutter에서 사용자가 헤더를 탭하면 내용이 펼쳐지거나 접히는 위젯입니다. 이 위젯을 사용하면 효과적으로 확장 가능한 리스트를 만들 수 있습니다. 그러나 기본 제공 스타일이나 레이아웃이 원하는 대로 맞지 않을 수 있습니다.
이 글에서는 ExpansionPanel
의 헤더를 커스터마이징하는 방법을 살펴보겠습니다.
단계 1: ExpansionPanelList 생성
먼저 ExpansionPanelList
위젯을 생성해야 합니다. 이 위젯은 ExpansionPanel
의 목록을 보여주고 관리합니다. 다음은 기본적인 ExpansionPanelList
예제입니다:
ExpansionPanelList(
elevation: 1,
expandedHeaderPadding: EdgeInsets.all(0),
expansionCallback: (int index, bool isExpanded) {
setState(() {
//상태 변경
});
},
children: [
//ExpansionPanel 위젯들
],
)
children
속성에는 ExpansionPanel
위젯들을 넣어야 합니다.
단계 2: ExpansionPanel 위젯 생성
이제 ExpansionPanel
을 생성합니다. 이 위젯은 헤더와 내용을 포함하고 있습니다. 커스터마이징할 헤더를 만들기 위해 headerBuilder
속성을 사용해야 합니다. 다음은 ExpansionPanel
의 예제입니다:
ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded) {
return Container(
//헤더 컨테이너 스타일
);
},
body: Container(
//내용 컨테이너 스타일
),
isExpanded: //확장 여부
)
headerBuilder
속성에는 헤더 위젯을 반환하는 함수를 작성합니다. 이 함수에서 헤더의 모양과 레이아웃을 원하는대로 커스터마이징할 수 있습니다.
예제
다음은 ExpansionPanelList의 헤더를 커스터마이징하는 예제입니다:
ExpansionPanelList(
elevation: 1,
expandedHeaderPadding: EdgeInsets.all(0),
expansionCallback: (int index, bool isExpanded) {
setState(() {
//상태 변경
});
},
children: [
ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded) {
return Container(
padding: EdgeInsets.all(16),
child: Text(
"헤더",
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
);
},
body: Container(
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: Text("내용"),
),
isExpanded: //확장 여부
),
//더 많은 ExpansionPanel 위젯들
],
)
위 예제에서는 headerBuilder
함수에서 헤더의 스타일을 설정했습니다. 이로써 ExpansionPanel의 헤더를 원하는대로 커스터마이징할 수 있습니다.
결론
이번에는 Flutter의 ExpansionPanel
위젯에서 헤더를 커스터마이징하는 방법에 대해 알아보았습니다. 이를 활용하면 ExpansionPanel
의 외관을 쉽게 변경할 수 있습니다. 저희가 제공한 예제를 참고하여 원하는대로 헤더를 디자인해보세요!