[flutter] carousel_slider에서 아이템 순서 변경 기능 구현하기

본 게시물에서는 Flutter의 carousel_slider 패키지를 사용하여 아이템 순서 변경 기능을 구현하는 방법에 대해 알아보겠습니다.

요구 사항

  1. Flutter 프로젝트를 생성합니다.
  2. carousel_slider 패키지를 설치합니다.
    dependencies:
      carousel_slider: ^4.0.0
    

구현 방법

  1. carousel_slider 위젯을 import합니다.
    import 'package:carousel_slider/carousel_slider.dart';
    
  2. 데이터 리스트를 생성합니다.
    List<String> items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'];
    
  3. CarouselSlider 위젯을 구성하고, 아이템 순서 변경 기능을 구현합니다.
    CarouselSlider(
      options: CarouselOptions(
        enableInfiniteScroll: false,
        onPageChanged: (index, reason) {
          // 페이지 변경 시 호출되는 콜백 함수
          // 여기서 순서 변경 기능을 구현합니다.
        },
      ),
      items: items.map((item) {
        return Builder(
          builder: (BuildContext context) {
            return Container(
              child: Text(item),
            );
          },
        );
      }).toList(),
    );
    
    • enableInfiniteScroll을 false로 설정하여 무한 스크롤 기능을 비활성화합니다.
    • onPageChanged 콜백 함수를 사용하여 페이지 변경 시 호출되는 이벤트를 처리합니다.
    • 순서 변경 기능을 구현하기 위해서는 onPageChanged 콜백 함수에서 현재 페이지의 인덱스를 활용합니다.
  4. 아이템 순서 변경 기능을 구현합니다.
    List<String> updatedItems = items;
    
    void changeItemOrder(int oldIndex, int newIndex) {
      setState(() {
        if (newIndex > oldIndex) {
          newIndex -= 1;
        }
        final String item = updatedItems.removeAt(oldIndex);
        updatedItems.insert(newIndex, item);
      });
    }
    
  5. 순서 변경 기능을 반영한 CarouselSlider 위젯을 사용합니다.
    CarouselSlider(
      options: CarouselOptions(
        enableInfiniteScroll: false,
        onPageChanged: (index, reason) {
          changeItemOrder(index, index); // 아이템 순서 변경 함수 호출
        },
      ),
      items: updatedItems.map((item) {
        return Builder(
          builder: (BuildContext context) {
            return Container(
              child: Text(item),
            );
          },
        );
      }).toList(),
    );
    

실행 결과

CarouselSlider 위젯을 사용하여 아이템 순서 변경 기능을 구현한 결과는 다음과 같습니다.

carousel_slider

결론

본 포스트에서는 Flutter의 carousel_slider 패키지를 사용하여 아이템 순서 변경 기능을 구현하는 방법에 대해 알아보았습니다. 위의 방법을 활용하면 사용자가 스와이프할 때마다 아이템의 순서가 변경되는 동적인 CarouselSlider를 구현할 수 있습니다.

더 자세한 내용은 carousel_slider 패키지 문서를 참고하시기 바랍니다.