搜尋分類、套件與程式碼儲存庫

carousel_slider_plus 封面
套件詳情v7.1.2

carousel_slider_plus

一個輪播圖滑塊組件,支援無限捲動和自訂子組件。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
4.3萬
喜歡數
97
Pub 分數
160

安裝套件

flutter pub add carousel_slider_plus

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個用於建立順暢、可自訂的輪播滑塊的 Flutter 小部件,支援無限捲動與自訂子元件。非常適合以視覺上吸引人的方式,在水平或垂直可捲動版面中顯示圖片、卡片或其他內容。此套件輕量級,能無縫整合至跨平台應用程式,包含行動裝置、網頁與桌面端。它讓開發者能輕鬆設定指示器、自動播放與滑動手勢,以提升使用者體驗。

適用情境

  • 顯示圖像畫廊
  • 展示產品輪播
  • 建立入門畫面
  • 展示精選內容
  • 構建互動式滑塊
  • 突出顯示促銷橫幅

主要特色

  • 無限滾動支援
  • 可自定義的子部件
  • 自動播放功能
  • 指標自定義
  • 跨平台相容性
  • 流暢的動畫

適合對象

  • 行動應用開發者
  • Web應用程式創建者
  • 桌面應用程式整合商
  • UI/UX 設計師
  • 電子商務應用
  • 入門螢幕實現

使用建議

  • 可能需要針對大型數據集進行優化
  • 內建樣式選項有限
  • 大量子部件帶來的效能影響
  • 不適合複雜的嵌套版面
  • 需要手動處理點擊事件
  • 依賴外部依賴項以實現進階功能

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

carousel_slider_plus

A carousel slider widget.

This package is fork of carousel_slider which is not actively maintained.

pub package

likes popularity pub points



Migrating from carousel_slider

In this fork some of the namings are changed. So follow this below guides to migrate over this new package.

Please make sure to change the import statement
Before
import "package:carousel_slider/carousel_slider.dart;
After
import 'package:carousel_slider_plus/carousel_slider_plus.dart';
The parameter name to pass controller in CarouselSlider is now changed to controller from carouselController.
Before
CarouselSlider(
  carouselController: _controller,
  // Rest of the code
),
After
CarouselSlider(
  controller: _controller,
  // Rest of the code
),

Features

  • Infinite scroll
  • Custom child widgets
  • Auto play

Live preview

https://kishan-dhankecha.github.io/carousel-slider-plus-gh-pages/

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

Installation

Add latest version of carousel_slider_plus to your pubspec.yaml dependencies. And import it:

import 'package:carousel_slider_plus/carousel_slider_plus.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(),
)
Parameters
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,
  )
)

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) {
    return 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,
        controller: 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
/// Animate to the next page
controller.nextPage({Duration duration, Curve curve});


/// Animate to the previous page
controller.previousPage({Duration duration, Curve curve});


/// Jump to the given page.
controller.jumpToPage(int page);


/// Animate to the given page.
controller.animateToPage(int page, {Duration duration, Curve curve});


/// Start/Stop Auto-play (only work if `autoplay` is set to true in `CarouselOptions`)
controller.startAutoPlay();

Screenshots

Basic text carousel slider:

simple

Basic image carousel slider:

image

A more complicated image carousel slider:

complicated image

Full Screen image carousel slider:

fullscreen

Image carousel slider with custom indicator:

indicator

Manually control the page position:

manual

Vertical carousel slider:

vertical

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

prefetch

No infinite scroll:

no-loop

All screenshots above can be found at the example project.

License

MIT

所屬分類

原始碼儲存庫

使用此套件的專案