[flutter] ExpansionPanelList의 패널 내용 비동기로 로드하기

ExpansionPanelList는 사용자가 확장/축소할 수 있는 패널 목록을 제공하는 Flutter 위젯입니다. 이 위젯을 사용하여 다른 내용을 포함하는 패널을 만들 수 있습니다. 그러나 패널의 내용이 비동기로 로드되어야 하는 경우 어떻게 처리해야 할까요?

비동기로 패널 내용 로드하기

ExpansionPanelList 위젯은 패널 목록을 위해 ExpansionPanelWidget 리스트로 구성됩니다. 각 패널은 ExpansionPanelWidget의 속성을 사용하여 제목(Header)과 본문(Body) 위젯으로 구성됩니다. 따라서 비동기적으로 패널 내용을 로드하려면 ExpansionPanelWidget의 Body 위젯을 사용하여 비동기 데이터를 처리하는 것이 좋습니다.

다음은 ExpansionPanelWidget의 간단한 예시입니다.

ExpansionPanelWidget(
  headerBuilder: (BuildContext context, bool isExpanded) {
    return ListTile(
      title: Text('패널 제목'),
    );
  },
  body: FutureBuilder(
    future: _loadPanelContent(),
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        return Text('로드 중 오류가 발생했습니다.');
      } else {
        return Text(snapshot.data);
      }
    },
  ),
  isExpanded: _isPanelExpanded,
);

위의 코드에서 headerBuilder는 패널의 제목을 생성하는 데 사용되는 위젯을 반환하는 콜백 함수입니다. body 속성은 FutureBuilder를 사용하여 비동기 데이터를 처리하는 본문 위젯을 만듭니다. _loadPanelContent는 비동기 로직이 들어가는 함수로, 데이터를 가져오는 비동기 작업을 수행합니다.

참고사항

더 자세한 내용은 Flutter 공식 문서를 참조하세요.