[flutter] ExpansionPanel의 주요 속성과 기능

ExpansionPanel은 사용자가 터치하여 내용을 펼칠 수 있는 위젯입니다. 이 글에서는 ExpansionPanel 위젯의 주요 속성과 기능에 대해 알아보겠습니다.

ExpansionPanel의 주요 속성

  1. headerBuilder: ExpansionPanel의 헤더 부분을 생성하는 함수입니다. 이 함수는 헤더가 펼쳐져 있는지 여부에 따라 호출됩니다.
  2. body: ExpansionPanel이 펼쳐졌을 때 보여지는 내용입니다.
  3. isExpanded: ExpansionPanel의 초기 상태를 설정하는 불리언 값입니다. 기본값은 false이며, 이 값에 따라 펼쳐진 상태와 닫힌 상태를 결정합니다.
  4. canTapOnHeader: 사용자가 헤더 부분을 터치하여 ExpansionPanel을 펼칠 수 있는지 여부를 결정하는 불리언 값입니다. 기본값은 true입니다.

ExpansionPanel의 기능

  1. ExpansionPanelList: ExpansionPanel의 리스트를 생성하는 위젯입니다. 이 위젯은 ExpansionPanel 위젯을 자동으로 관리하고, 헤더와 내용을 정의하는 방식으로 ExpansionPanel을 생성합니다.
  2. ExpansionPanelList의 children: ExpansionPanelList 위젯의 자식으로 전달되는 ExpansionPanel 위젯들의 리스트입니다. 각 ExpansionPanel 위젯은 ExpansionPanelHeaderBuilder 함수와 body를 설정하여 생성됩니다.
  3. ExpansionPanelList의 expansionCallback: ExpansionPanel이 펼쳐졌을 때 호출되는 콜백 함수입니다. 이 함수는 사용자가 ExpansionPanel을 펼치거나 닫을 때마다 호출됩니다.
  4. ExpansionPanelList의 animationDuration: ExpansionPanel이 펼쳐지거나 닫힐 때의 애니메이션 지속 시간을 설정하는 Duration 객체입니다.
  5. ExpansionPanelList의 elevation: ExpansionPanelList 위젯이 가지는 그림자의 크기를 설정하는 값입니다.

예제 코드:

ExpansionPanelList(
  elevation: 1,
  animationDuration: Duration(milliseconds: 500),
  children: [
    ExpansionPanel(
      headerBuilder: (context, isExpanded) {
        return ListTile(
          title: Text('Header 1'),
        );
      },
      body: ListTile(
        title: Text('Expansion Panel 1'),
      ),
      isExpanded: false,
      canTapOnHeader: true,
    ),
    ExpansionPanel(
      headerBuilder: (context, isExpanded) {
        return ListTile(
          title: Text('Header 2'),
        );
      },
      body: ListTile(
        title: Text('Expansion Panel 2'),
      ),
      isExpanded: false,
      canTapOnHeader: true,
    ),
  ],
)

참고 문서: