Fluent encapsulates the example code of a banner round robin effect

CustomBanner(

 this._images,{

 this.height = 200,this.onTap,this.curve = Curves.linear,}) : assert(_images != null);

Widget _buildPageView() {
 var length = widget._images.length;
 return Container(
 height: widget.height,child: PageView.builder(
 controller: _pageController,onPageChanged: (index) {
 if (index == 0) {
 _curIndex = length;
 }
 },itemBuilder: (context,index) {
 return Image.network(
 widget._images[index % length],fit: @R_976_2419@Fit.cover,);
 },),);
}

_timer = Timer.periodic(Duration(seconds: 3),(t) {
 _curIndex++;
 _pageController.animateToPage(
 _curIndex,duration: Duration(milliseconds: 300),curve: Curves.linear,);
});

return GestureDetector(
 onTap: () {
 Scaffold.of(context).showSnackBar(
 SnackBar(
 content: Text('当前 page 为 ${index % length}'),duration: Duration(milliseconds: 500),child: Image.network(
 widget._images[index % length],);

return Stack(
 alignment: Alignment.bottomCenter,children: <Widget>[
 _buildViewPager(),_buildIndicator(),],);

Widget _buildIndicator() {
 var length = widget._images.length;
 return Positioned(
 bottom: 10,child: Row(
 children: widget._images.map((s) {
 return Padding(
 padding: const EdgeInsets.symmetric(horizontal: 3.0),child: ClipOval(
 child: Container(
 width: 8,height: 8,color: Colors.grey,);
 }).toList(),);
}

Widget _buildIndicator() {
 var length = widget._images.length;
 return Positioned(
 bottom: 10,color: s == widget._images[_curIndex % length]
 ? Colors.white
 : Colors.grey,);
}

/// 点击到图片的时候取消定时任务
_cancelTimer() {
 if (_timer != null) {
 _timer.cancel();
 _timer = null;
 _initTimer();
 }
}
/// ------------------------
return GestureDetector(
 onPanDown: (details) {
 _cancelTimer();
 },onTap: () {
 Scaffold.of(context).showSnackBar(
 SnackBar(
 content: Text('当前 page 为 ${index % length}'),);

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>