這里我們需要一個(gè)第三方庫(kù):
https://pub.dev/packages/flutter_swiper#-readme-tab-
一. 安裝方法:
- 在根目錄
pubspec.yaml
文件中添加依賴
dependencies:
flutter_swiper: ^1.1.6
- 如果是VS,第二步是自動(dòng)執(zhí)行的
$ flutter pub get
- 在想用的文件中導(dǎo)入:
import 'package:flutter_swiper/flutter_swiper.dart';
二. 輕松使用
這里總結(jié)了幾種樣式, 都很不錯(cuò),直接拿過(guò)來(lái)用就可以了
import 'package:flutter/material.dart';
import 'package:flutter_swiper/flutter_swiper.dart'; //引入這個(gè)控件
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Image> imgs = [
//建立了一個(gè)圖片數(shù)組
Image.network(
"https://images.unsplash.com/photo-1477346611705-65d1883cee1e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60",
fit: BoxFit.cover,
),
Image.network(
"https://images.unsplash.com/photo-1498550744921-75f79806b8a7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80",
fit: BoxFit.cover,
),
Image.network(
"https://images.unsplash.com/photo-1451187580459-43490279c0fa?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60",
fit: BoxFit.cover,
),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("圖片輪播"),
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Text("樣式1:"),
Container(
height: 175,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
//條目構(gòu)建函數(shù)傳入了index,根據(jù)index索引到特定圖片
return imgs[index];
},
itemCount: imgs.length,
autoplay: true,
pagination: new SwiperPagination(), //這些都是控件默認(rèn)寫好的,直接用
control: new SwiperControl(),
),
),
Text("樣式2:"),
Container(
height: 175,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return imgs[index];
},
itemCount: imgs.length,
autoplay: true,
pagination: new SwiperPagination(),
control: new SwiperControl(),
viewportFraction: 0.8,
scale: 0.9,
),
),
Text("樣式3:"),
Container(
height: 175,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return imgs[index];
},
itemCount: imgs.length,
autoplay: true,
pagination: new SwiperPagination(),
control: new SwiperControl(),
itemWidth: 300.0,
layout: SwiperLayout.STACK,
),
),
Text("樣式4:"),
Container(
height: 175,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return imgs[index];
},
itemCount: imgs.length,
autoplay: true,
pagination: new SwiperPagination(),
control: new SwiperControl(),
itemWidth: 300.0,
itemHeight: 400.0,
layout: SwiperLayout.TINDER,
),
),
Text("樣式5:"),
Container(
height: 175,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return imgs[index];
},
itemCount: imgs.length,
autoplay: true,
pagination: new SwiperPagination(),
control: new SwiperControl(),
layout: SwiperLayout.CUSTOM,
customLayoutOption: new CustomLayoutOption(
startIndex: -1, stateCount: 3)
.addRotate([-45.0 / 180, 0.0, 45.0 / 180]).addTranslate([
new Offset(-370.0, -40.0),
new Offset(0.0, 0.0),
new Offset(370.0, -40.0)
]),
itemWidth: 300.0,
itemHeight: 200.0,
),
),
],
),
),
);
}
}
三. 常用參數(shù)
我們可以通過(guò)設(shè)置控件幫我們準(zhǔn)備好的屬性進(jìn)一步滿足我們的需求.
如果還不夠用, 還可以重寫這個(gè)控件.