[flutter] ListView에서 아이템을 롱 클릭하여 추가 작업 수행하기

Flutter 앱을 개발하는 경우, ListView에서 아이템을 롱 클릭하여 추가 작업을 수행해야 하는 경우가 있습니다. 이를 위해서는 GestureDetector 위젯과 ContextMenu를 활용하여 손쉽게 구현할 수 있습니다.

GestureDetector를 사용하여 롱 클릭 처리하기

ListView.builder(
  itemCount: items.length,
  itemBuilder: (BuildContext context, int index) {
    return GestureDetector(
      onLongPress: () {
        // 롱 클릭 시 수행할 작업 추가
      },
      child: ListTile(
        title: Text(items[index]),
      ),
    );
  },
)

위의 예제에서는 ListView의 각 아이템에 GestureDetector를 추가하여, 아이템을 롱 클릭했을 때 수행할 작업을 정의할 수 있습니다.

ContextMenu를 활용하여 추가 작업 수행하기

return GestureDetector(
  onLongPress: () {
    showMenu(
      context: context,
      position: RelativeRect.fromLTRB(details.globalPosition.dx, details.globalPosition.dy, 0, 0),
      items: <PopupMenuEntry>[
        PopupMenuItem(
          child: Text('추가 작업 1'),
          value: 'action1',
        ),
        PopupMenuItem(
          child: Text('추가 작업 2'),
          value: 'action2',
        ),
      ],
    ).then((value) {
      if (value == 'action1') {
        // 추가 작업 1 수행
      } else if (value == 'action2') {
        // 추가 작업 2 수행
      }
    });
  },
  child: ListTile(
    title: Text(items[index]),
  ),
);

위의 예제에서는 ContextMenu를 활용하여 ListView 아이템을 롱 클릭했을 때, 특정 작업을 선택할 수 있는 메뉴를 표시하고, 선택된 작업에 따라 추가 작업을 수행할 수 있습니다.

위와 같이 GestureDetector와 ContextMenu를 활용하여 ListView에서 아이템을 롱 클릭하여 추가 작업을 손쉽게 수행할 수 있습니다.

본 내용은 Flutter 공식 문서를 참고하여 작성되었습니다.