분류, 패키지 및 저장소 검색

carousel_slider 표지
패키지 상세v5.1.2

carousel_slider

무한 스크롤과 사용자 정의 자식 위젯을 지원하는 카루셀 슬라이더 위젯입니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
98만
좋아요
6.1천
Pub 점수
160

패키지 설치

flutter pub add carousel_slider

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

무한 스크롤링과 사용자 정의 자식 위젯을 지원하는 사용자 정의 가능한 카루셀 슬라이더 위젯을 제공하는 플러터 패키지입니다. 이미지, 카드 또는 어떤 콘텐츠든 스와이프 가능한 수평 레이아웃으로 표시하는 데 이상적입니다. 부드러운 애니메이션, 자동 재생 및 여러 플랫폼에서 반응형 디자인을 제공합니다. 가볍고 기존 플러터 프로젝트에 쉽게 통합할 수 있습니다. 시각적으로 매력적인 방식으로 주목할 만한 아이템, 제품 갤러리 또는 프로모션 콘텐츠를 소개하는 데 적합합니다.

사용 사례

  • 이미지 갤러리 표시
  • 제품 강조 사항을 선보입니다
  • 온보딩 화면 만들기
  • 프로모션 콘텐츠 소개
  • 인터랙티브 슬라이더 만들기
  • 무한 스크롤 가능한 목록 지원

주요 기능

  • 무한 스크롤 지원
  • 사용자 지정 가능한 자식 위젯
  • 부드러운 애니메이션
  • 자동 재생 기능
  • 반응형 디자인
  • 크로스 플랫폼 호환성

적합한 대상

  • 전자상거래 앱
  • 여행 또는 포트폴리오 웹사이트
  • 온보딩 경험
  • 콘텐츠가 풍부한 모바일 앱
  • 인터랙티브 UI 컴포넌트
  • 스와이프 가능한 캐러셀이 필요한 프로젝트

고려 사항

  • 대규모 데이터 세트에 대한 최적화가 필요할 수 있습니다
  • 복잡한 자식 요소로 인한 성능 영향
  • 자동 재생 시간을 신중하게 다뤄야 합니다
  • 제한된 내장 페이지네이션 컨트롤
  • 수직 스크롤에 적합하지 않음
  • 적절한 상태 관리가 필요합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

carousel_slider

A carousel slider widget.

Features

  • Infinite scroll
  • Custom child widgets
  • Auto play

Supported platforms

  • Flutter Android
  • Flutter iOS
  • Flutter web
  • Flutter desktop

Live preview

https://serenader2014.github.io/flutter_carousel_slider/#/

Note: this page is built with flutter-web. For a better user experience, please use a mobile device to open this link.

Installation

Add carousel_slider: ^5.1.2 to your pubspec.yaml dependencies. And import it:

import 'package:carousel_slider/carousel_slider.dart';

How to use

Simply create a CarouselSlider widget, and pass the required params:

CarouselSlider(
  options: CarouselOptions(height: 400.0),
  items: [1,2,3,4,5].map((i) {
    return Builder(
      builder: (BuildContext context) {
        return Container(
          width: MediaQuery.of(context).size.width,
          margin: EdgeInsets.symmetric(horizontal: 5.0),
          decoration: BoxDecoration(
            color: Colors.amber
          ),
          child: Text('text $i', style: TextStyle(fontSize: 16.0),)
        );
      },
    );
  }).toList(),
)

Params


CarouselSlider(
   items: items,
   options: CarouselOptions(
      height: 400,
      aspectRatio: 16/9,
      viewportFraction: 0.8,
      initialPage: 0,
      enableInfiniteScroll: true,
      reverse: false,
      autoPlay: true,
      autoPlayInterval: Duration(seconds: 3),
      autoPlayAnimationDuration: Duration(milliseconds: 800),
      autoPlayCurve: Curves.fastOutSlowIn,
      enlargeCenterPage: true,
      enlargeFactor: 0.3,
      onPageChanged: callbackFunction,
      scrollDirection: Axis.horizontal,
   )
 )

Since v2.0.0, you'll need to pass the options to CarouselOptions. For each option's usage you can refer to carousel_options.dart.

If you pass the height parameter, the aspectRatio parameter will be ignored.

Build item widgets on demand

This method will save memory by building items once it becomes necessary. This way they won't be built if they're not currently meant to be visible on screen. It can be used to build different child item widgets related to content or by item index.


CarouselSlider.builder(
  itemCount: 15,
  itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) =>
    Container(
      child: Text(itemIndex.toString()),
    ),
)

Carousel controller

In order to manually control the pageview's position, you can create your own CarouselSliderController, and pass it to CarouselSlider. Then you can use the CarouselSliderController instance to manipulate the position.

class CarouselDemo extends StatelessWidget {
  CarouselSliderController buttonCarouselController = CarouselSliderController();

 @override
  Widget build(BuildContext context) => Column(
    children: <Widget>[
      CarouselSlider(
        items: child,
        carouselController: buttonCarouselController,
        options: CarouselOptions(
          autoPlay: false,
          enlargeCenterPage: true,
          viewportFraction: 0.9,
          aspectRatio: 2.0,
          initialPage: 2,
        ),
      ),
      RaisedButton(
        onPressed: () => buttonCarouselController.nextPage(
            duration: Duration(milliseconds: 300), curve: Curves.linear),
        child: Text('→'),
      )
    ]
  );
}
CarouselSliderController methods
.nextPage({Duration duration, Curve curve})

Animate to the next page

.previousPage({Duration duration, Curve curve})

Animate to the previous page

.jumpToPage(int page)

Jump to the given page.

.animateToPage(int page, {Duration duration, Curve curve})

Animate to the given page.

Screenshot

Basic text carousel demo:

simple

Basic image carousel demo:

image

A more complicated image carousel slider demo:

complicated image

Fullscreen image carousel slider demo:

fullscreen

Image carousel slider with custom indicator demo:

indicator

Custom CarouselSliderController and manually control the pageview position demo:

manual

Vertical carousel slider demo:

vertical

Simple on-demand image carousel slider, with image auto prefetch demo:

prefetch

No infinite scroll demo:

noloop

All screenshots above can be found at the example project.

License

MIT

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

순위