[flutter] carousel_slider에서 아이템에 맞는 위치 정보 표시하기

Flutter에는 다양한 UI 요소를 구현할 수 있는 플러그인들이 많이 존재합니다. 그 중에서도 carousel_slider는 이미지나 컨텐츠를 좌우로 슬라이딩할 수 있는 카루셀 형태의 UI를 제공해주는 플러그인입니다.

이번에는 carousel_slider를 사용하여 각 아이템에 맞는 위치 정보를 표시하는 방법에 대해 알아보겠습니다.

먼저, pubspec.yaml 파일에 carousel_slider를 추가해야 합니다.

dependencies:
  flutter:
    sdk: flutter
  carousel_slider: ^4.0.0

위와 같이 dependencies에 carousel_slider를 추가해줍니다. 그리고 flutter packages get 명령어를 실행하여 패키지를 설치합니다.

사용할 페이지에서 carousel_slider를 import하고 아래와 같은 코드로 사용할 수 있습니다.

import 'package:flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';

class MySlider extends StatelessWidget {
  final List<String> items = [
    'Item 1',
    'Item 2',
    'Item 3',
    'Item 4',
    'Item 5'
  ];

  @override
  Widget build(BuildContext context) {
    return CarouselSlider(
      items: items.map((item) {
        return Builder(
          builder: (BuildContext context) {
            return Container(
              margin: EdgeInsets.symmetric(horizontal: 10.0),
              child: Text(
                item,
                style: TextStyle(fontSize: 20.0),
              ),
            );
          },
        );
      }).toList(),
      options: CarouselOptions(
        enableInfiniteScroll: true,
        autoPlay: true,
        viewportFraction: 0.8,
        aspectRatio: 2.0,
        onPageChanged: (index, reason) {
          // 아이템 위치 정보 출력
          print("Current item position: $index");
        },
      ),
    );
  }
}

위 코드에서는 MySlider 클래스 내부에서 carousel_slider를 사용하고 있습니다. items라는 리스트에서 각 아이템을 정의하고 Builder 위젯을 사용하여 각 아이템을 컨테이너로 감싸서 반환하고 있습니다. Builder 위젯을 사용하는 이유는 carousel_slider에서 각 아이템마다 고유한 BuildContext를 사용하기 때문입니다.

options 내부에서는 다양한 설정값을 지정할 수 있습니다. 여기서는 onPageChanged 콜백 함수를 이용하여 아이템의 위치 정보를 출력하고 있습니다.

3. 결과 확인하기

위 코드를 실행하여 결과를 확인하면, carousel_slider가 화면에 나타나며 슬라이드할 수 있는 카루셀 UI를 확인할 수 있습니다. 슬라이딩할 때마다 현재 아이템의 위치 정보가 콘솔에 출력됩니다.

이제 carousel_slider에서 아이템에 맞는 위치 정보를 표시하는 방법을 알아보았습니다. 다양한 UI 요소와 결합하여 사용하면 더 다양하고 유용한 애플리케이션을 개발할 수 있습니다.

참고 자료