[flutter] DataTable에서 특정 셀에 컨텍스트 메뉴 추가하는 방법

Flutter의 DataTable는 효율적인 데이터 표 형식을 구축하는 데 탁월한 도구입니다. 특정 셀에 컨텍스트 메뉴를 추가하는 방법에 대해 알아봅시다.

1. DataTable 생성

먼저, DataTable을 생성합니다. 다음은 간단한 예시입니다.

DataTable(
  columns: [
    DataColumn(label: Text('이름')),
    DataColumn(label: Text('이메일')),
  ],
  rows: [
    DataRow(
      cells: [
        DataCell(Text('홍길동')),
        DataCell(Text('hong@example.com')),
      ],
    ),
    DataRow(
      cells: [
        DataCell(Text('김철수')),
        DataCell(Text('kim@example.com')),
      ],
    ),
  ],
)

2. 컨텍스트 메뉴 추가

특정 셀에 컨텍스트 메뉴를 추가하려면, DataCell 위젯을 사용하여 해당 셀을 래핑하고, onLongPress 콜백을 제공하여 오랫동안 누르는 동작에 대한 처리를 정의합니다.

DataCell(
  Text('홍길동'),
  onLongPress: () {
    // 컨텍스트 메뉴 띄우기
  },
)

이제, 위 코드 블록 안에서 컨텍스트 메뉴를 띄우기 위한 로직을 추가할 수 있습니다.

3. 컨텍스트 메뉴 구성

선택된 셀에 인덱스를 확인하고, 이에 따른 컨텍스트 메뉴를 구성합니다.

void _showContextMenu(String name) {
  // 컨텍스트 메뉴 띄우기
  // 선택된 셀의 내용(name)을 기준으로 구성
  // 예: 수정, 삭제 등의 옵션 추가
}

이제 _showContextMenu 메서드를 사용하여 컨텍스트 메뉴를 띄울 수 있습니다.

위와 같은 방법으로, DataTable의 특정 셀에 컨텍스트 메뉴를 추가할 수 있습니다. 더 많은 기능을 추가하고 싶다면 GestureDetectors와 함께 커스텀하게 구현할 수도 있습니다.

이것으로 Flutter의 DataTable에서 특정 셀에 컨텍스트 메뉴를 추가하는 방법에 대한 소개를 마치겠습니다. 기타 궁금한 사항이 있으시다면 언제든지 문의해 주세요!

참고자료: