import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class DiscountZone extends StatefulWidget { final List coupon; DiscountZone(this.coupon); @override State createState() { return _DiscountZone(); } } class _DiscountZone extends State { ApiService apiService; @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: EdgeInsets.only(top:28.h,), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding(padding: EdgeInsets.symmetric(horizontal: 14.w),child: Row( children: [ Expanded(child: Text( S.of(context).tehuizhuanqu, style: TextStyle( color: Color(0xFF0D0D0D), fontSize: 15.sp, fontWeight: FontWeight.bold, ), )), GestureDetector( onTap: (){ Navigator.of(context).pushNamed('/router/welfare_page'); }, child: Text( "更多好券", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.regular, color: Color(0xFF4D4D4D), ), ), ), ], ),), if(widget.coupon.length != 0) Container( height: 120.h, margin: EdgeInsets.only(top: 10.h), child: ListView.builder( scrollDirection: Axis.horizontal, physics: BouncingScrollPhysics(), padding: EdgeInsets.symmetric(horizontal: 14.w), itemBuilder: (context, position) { return GestureDetector( onTap: (){ Navigator.of(context).pushNamed('/router/welfare_page'); }, child: discountItem(widget.coupon[position]), ); }, itemCount:widget.coupon.length>5?5:widget.coupon.length, ), ), ], ), ); } Widget discountItem(Coupon coupon) { return Container( width: 290.w, height: 120.h, decoration: BoxDecoration( image: DecorationImage( fit: BoxFit.fill, image: AssetImage("assets/image/discount.webp"), ), ), margin: EdgeInsets.only(right: 10.w), child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( flex: 2, child: Container( margin: EdgeInsets.only(top: 12.h,bottom: 12.h,left: 20.w,right: 27.w), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( (coupon != null ? coupon.couponName ?? "" : ""), maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, height: 1.5.h, fontWeight: MyFontWeight.semi_bold, color: Color(0xFF32A060), ), ), ], ), )), Expanded( flex: 1, child:Container( margin: EdgeInsets.only(top: 12.h,bottom: 12.h), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded(child: Container( padding: EdgeInsets.only(right: 5.w), child:discountWidget(coupon), )), ], ), )), ], ) ); } Widget discountWidget(Coupon coupon) { if (coupon.bizType == 1) { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, children: [ Text( "¥", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), SizedBox( height: 4.h, ), Text( coupon != null ? double.tryParse("${coupon.discountAmount}" ?? "0").toInt() .toString() : "", style: TextStyle( fontSize: 30.sp, fontWeight: FontWeight.w900, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ), Text( S.of(context).manyuankeyong(coupon != null ? ("${coupon.fullAmount}" ?? "0") .toString() : ""), style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ); } else if (coupon.bizType == 3) { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( padding: EdgeInsets.only(bottom:10.h,top: 7.h,left: 12.w), child: Text( S.of(context).duihuanquan, style: TextStyle( fontSize: 26.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ), Text( S.of(context).xianshangshiyong, style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ); } else if (coupon.bizType == 5) { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( padding: EdgeInsets.only(bottom:10.h,top: 7.h,left: 12.w), child: Text( S.of(context).duihuanquan, style: TextStyle( fontSize: 26.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ), Text( S.of(context).xianxiashiyong, style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ); } else if (coupon.bizType == 6) { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, children: [ Text( "¥", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.medium, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), SizedBox( height: 4.h, ), Text( coupon != null ? "${AppUtils.calculateDouble(double.tryParse(coupon.limitAmount) ?? 0)}" : "", style: TextStyle( fontSize: 28.sp, fontWeight: FontWeight.w900, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ), ], ); }else{ return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, children: [ Text( coupon != null ? "${(coupon.discountPercent / 10.0 >= 10) ? 10 : coupon.discountPercent / 10.0}" ?? "0" : "", style: TextStyle( fontSize: 30.sp, fontWeight: FontWeight.w900, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), SizedBox( height: 4.h, ), Text( "折", style: TextStyle( fontSize: 14.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFF32A060), ), ), ], ), ], ); } } }