Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/serenader2014/flutter_carousel_slider
A flutter carousel widget, support infinite scroll, and custom child widget.
https://github.com/serenader2014/flutter_carousel_slider
autoplay carousel-slider flutter infinite-scroll widget
Last synced: about 1 month ago
JSON representation
A flutter carousel widget, support infinite scroll, and custom child widget.
- Host: GitHub
- URL: https://github.com/serenader2014/flutter_carousel_slider
- Owner: serenader2014
- License: mit
- Created: 2018-04-16T17:05:04.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-07T17:17:18.000Z (6 months ago)
- Last Synced: 2024-04-24T00:13:46.997Z (about 1 month ago)
- Topics: autoplay, carousel-slider, flutter, infinite-scroll, widget
- Language: Dart
- Homepage: https://pub.dev/packages/carousel_slider
- Size: 40.7 MB
- Stars: 1,556
- Watchers: 22
- Forks: 514
- Open Issues: 204
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Lists
- awesome-stars - serenader2014/flutter_carousel_slider - A flutter carousel widget, support infinite scroll, and custom child widget. (Dart)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter-mobile - flutter_carousel_slider - A customizable carousel slider for Flutter. Supports infinite sliding, custom indicators, and custom animations with many pre-built indicators and animations. ([Live Preview](https://serenader2014.github.io/flutter_carousel_slider/)) (Packages)
- awesome-flutter-cn - 轮播滑块 - 由 [serenader](https://github.com/serenader2014) 制作的轮播滑块小部件,支持无限滚动和自定义子部件。 (组件 / 图片)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-github-star - flutter_carousel_slider
- -awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-stars-webVueBlog - serenader2014/flutter\_carousel\_slider - A flutter carousel widget, support infinite scroll, and custom child widget. (Dart / 运维\&DevOps)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014). (Components / Image)
- awesome-flutter-cn - Carousel Slider - 支持无限滚动和自定义子元素的轮播 widget, [serenader](https://github.com/serenader2014). (组件 / 图片)
- awesome-flutter - Carousel Slider - Carousel slider widget, support infinite scroll and custom child widget by [serenader](https://github.com/serenader2014) (Components / Image)
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: ^4.2.1` to your `pubspec.yaml` dependencies. And import it:
```dart
import 'package:carousel_slider/carousel_slider.dart';
```## How to use
Simply create a `CarouselSlider` widget, and pass the required params:
```dart
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
```dart
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](./lib/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.```dart
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 `CarouselController`, and pass it to `CarouselSlider`. Then you can use the `CarouselController` instance to manipulate the position.
```dart
class CarouselDemo extends StatelessWidget {
CarouselController buttonCarouselController = CarouselController();@override
Widget build(BuildContext context) => Column(
children: [
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('→'),
)
]
);
}
```### `CarouselController` 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](screenshot/basic.gif)
Basic image carousel demo:
![image](screenshot/image.gif)
A more complicated image carousel slider demo:
![complicated image](screenshot/complicated-image.gif)
Fullscreen image carousel slider demo:
![fullscreen](screenshot/fullscreen.gif)
Image carousel slider with custom indicator demo:
![indicator](screenshot/indicator.gif)
Custom `CarouselController` and manually control the pageview position demo:
![manual](screenshot/manually.gif)
Vertical carousel slider demo:
![vertical](screenshot/vertical.gif)
Simple on-demand image carousel slider, with image auto prefetch demo:
![prefetch](screenshot/preload.gif)
No infinite scroll demo:
![noloop](screenshot/noloop.gif)
All screenshots above can be found at the example project.
## License
MIT