import 'package:flutter/material.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; import 'package:huixiang/retrofit/data/banner.dart'; import 'package:huixiang/view_widget/custom_image.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class HomeBanner extends StatefulWidget { final List bannerData; final SwiperController controller; HomeBanner(this.bannerData, this.controller); @override State createState() { return _HomeBanner(); } } class _HomeBanner extends State { @override Widget build(BuildContext context) { return Container( child: AspectRatio( aspectRatio: 2, child: Swiper( pagination: SwiperPagination( margin: EdgeInsets.only(bottom: 20.h), alignment: Alignment.bottomCenter, builder: DotSwiperPaginationBuilder( size: 8, activeSize: 8, space: 5, activeColor: Colors.white, color: Colors.white.withAlpha(76), ), ), controller: widget.controller, physics: BouncingScrollPhysics(), itemBuilder: (context, position) { return InkWell( onTap: () { bannerClick(widget.bannerData[position]); }, child: Container( margin: EdgeInsets.all(16), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), ), child: MImage( (widget.bannerData != null && position < widget.bannerData.length) ? widget.bannerData[position].imgUrl ?? "" : "", radius: BorderRadius.circular(8), fit: BoxFit.cover, errorSrc: "assets/image/default_2_1.png", fadeSrc: "assets/image/default_2_1.png", ), ), ); }, itemCount: (widget.bannerData != null && widget.bannerData.length > 0) ? widget.bannerData.length : 1, ), ), ); } /// contentType 跳转类型(0:不跳转,1:积分商品,2:活动,3:文章) bannerClick(BannerData bannerData) async { switch (bannerData.contentType) { // case 0: // Navigator.of(context).pushNamed('/router/qr_share'); // break; case 1: Navigator.of(context).pushNamed( '/router/integral_store_page', arguments: {"goodsId": bannerData.content}, ); break; case 2: Navigator.of(context).pushNamed( '/router/web_page', arguments: {"activityId": bannerData.content}, ); break; case 3: Navigator.of(context).pushNamed( '/router/web_page', arguments: {"articleId": bannerData.content}, ); break; } } }