Flutter轮播图插件flutter_carousel_slider_plus的使用
Flutter轮播图插件flutter_carousel_slider_plus的使用
插件简介
A carousel slider widget, Compatible with flutter 3.24.
特性
- 无限滚动
- 自定义子组件
- 自动播放
支持平台
- Flutter Android
- Flutter iOS
- Flutter Web
- Flutter 桌面
安装
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
carousel_slider_plus: ^0.0.1
然后导入该库:
import 'package:flutter_carousel_slider_plus/carousel_slider.dart';
如何使用
创建一个 CarouselSlider
小部件,并传递所需的参数:
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(),
)
参数
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,
)
)
注意:如果传递了 height
参数,则 aspectRatio
参数将被忽略。
动态构建项目项小部件
这种方法通过仅在必要时构建项目来节省内存。这样可以确保在当前不可见的情况下不会构建它们。
CarouselSlider.builder(
itemCount: 15,
itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) =>
Container(
child: Text(itemIndex.toString()),
),
)
轮播控制器
为了手动控制页面视图的位置,你可以创建自己的 CarouselControllerSlider
,并将其传递给 CarouselSlider
。然后你可以使用 CarouselControllerSlider
实例来操作位置。
class CarouselDemo extends StatelessWidget {
CarouselControllerSlider buttonCarouselController = CarouselControllerSlider();
[@override](/user/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,
),
),
ElevatedButton(
onPressed: () => buttonCarouselController.nextPage(
duration: Duration(milliseconds: 300), curve: Curves.linear),
child: Text('→'),
)
]
);
}
更多关于Flutter轮播图插件flutter_carousel_slider_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复