import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../retrofit/data/min_order_info.dart'; import '../../retrofit/data/settleOrderInfo.dart'; class PayMethod extends StatefulWidget { final Function(int payChannel) payChannelCheck; final String coupons; final String promotions; final bool useVipPriceSelect; final SettleOrderInfo settleOrderInfo; final bool useBenefitSelect; final int tableId; final MinOrderInfo minOrderInfo; PayMethod(this.payChannelCheck,this.coupons,this.promotions,this.useVipPriceSelect,this.settleOrderInfo,this.useBenefitSelect,this.tableId,this.minOrderInfo); @override State createState() { return _PayMethod(); } } class _PayMethod extends State { String money = "0"; String balance = "0"; String mGreenMoney = "0"; String mRaiseMoney = "0"; @override void initState() { super.initState(); checkIndex = ((widget.minOrderInfo != null) ? (widget?.minOrderInfo?.isRaise??false) : (widget?.settleOrderInfo?.isRaise ?? false)) ? 4:5; SharedPreferences.getInstance().then((value) { Map memberInfo = jsonDecode(value.getString("minMember")); balance = memberInfo["balance"]; money = memberInfo["money"]; mGreenMoney = memberInfo["greenMoney"]; mRaiseMoney = memberInfo["raiseMoney"]; setState(() {}); }); } @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: EdgeInsets.only( left: 16.w, right: 16.w, top: 8.h, bottom: 16.h, ), padding: EdgeInsets.only( left: 16.w, right: 16.w, top: 20.h, bottom: 20.h, ), decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Color(0x000000).withAlpha(25), offset: Offset(0, 2), blurRadius: 3, ), ], color: Colors.white, borderRadius: BorderRadius.circular(8), ), child: Column( mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.only(bottom: 16.h), child: Text( S.of(context).zhifufangshi, style: TextStyle( fontSize: 16.sp, color: Colors.black, fontWeight: MyFontWeight.regular, ), ), ), if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)) GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { double m = double.parse(money); if (m == null) { m = 0; } double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0'); if (orderSum == null) { orderSum = 0; } if (orderSum > m) { return; } setState(() { checkIndex = 1; }); widget.payChannelCheck(4); }, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(1, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0)), Expanded( child: Container(), flex: 1, ), Text( "¥$money", style: TextStyle( fontSize: 14.sp, fontFamily: 'JDZhengHT', color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.medium, ), ), SizedBox( width: 10, ), Text( S.of(context).huixiangqianbao, style: TextStyle( fontSize: 14.sp, color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.semi_bold, ), ), ], ), ), if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)) SizedBox( height: 10, ), if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)) GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { double balanceMoney = double.parse(balance); if (balanceMoney == null) { balanceMoney = 0; } double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0'); if (orderSum == null) { orderSum = 0; } if (orderSum > balanceMoney) { return; } setState(() { checkIndex = 2; }); widget.payChannelCheck(3); }, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(2, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0)), Expanded( child: Container(), flex: 1, ), Text( "¥$balance", style: TextStyle( fontSize: 14.sp, fontFamily: 'JDZhengHT', color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.medium, ), ), SizedBox( width: 10, ), Text( S.of(context).mendianyue, style: TextStyle( fontSize: 14.sp, color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.semi_bold, ), ), ], ), ), if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)) SizedBox( height: 10, ), if(mGreenMoney!="0.00" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))) GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { double greenMoney = double.parse(mGreenMoney); if (greenMoney == null) { greenMoney = 0; } double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0'); if (orderSum == null) { orderSum = 0; } if (orderSum > greenMoney) { return; } setState(() { checkIndex = 3; // if(widget.promotions != "" || widget.coupons != "" || widget.useVipPriceSelect || widget.useBenefitSelect){ // print("discount-promotions: ${widget.promotions}"); // print("discount-coupons: ${widget.coupons}"); // print("discount-useVipPriceSelect: ${widget.useVipPriceSelect}"); // print("discount-useBenefitSelect: ${widget.useBenefitSelect}"); // SmartDialog.show( // widget: SettlementTips( // () { // }, // text: "绿币支付不参与任何活动优惠,请重新选择支付方式", // )); // return; // } }); print("discount-payChannelCheck: 5"); widget.payChannelCheck(5); }, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(3, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0)), Spacer(flex: 1,), Text( "¥$mGreenMoney", style: TextStyle( fontSize: 14.sp, fontFamily: 'JDZhengHT', color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.medium, ), ), SizedBox( width: 10, ), Text( S.of(context).lvbizhifu, style: TextStyle( fontSize: 14.sp, color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.semi_bold, ), ), ], ), ), if(mGreenMoney != "0.00" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))) SizedBox( height: 10, ), if(mRaiseMoney != "0" && (widget.tableId > 0 ? (widget?.minOrderInfo?.isRaise ?? false) : (widget?.settleOrderInfo?.isRaise ?? false))) GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { double raiseMoney = double.parse(mRaiseMoney); if (raiseMoney == null) { raiseMoney = 0; } double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0'); if (orderSum == null) { orderSum = 0; } if (orderSum > raiseMoney) { return; } setState(() { checkIndex = 4; // if(widget.promotions != "" || widget.coupons != "" || widget.useVipPriceSelect || widget.useBenefitSelect){ // SmartDialog.show( // widget: SettlementTips( // () {}, // text: "助农积分不参与任何活动优惠,请重新选择支付方式", // ), // ); // return; // } }); widget.payChannelCheck(7); }, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(4, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0)), Spacer( flex: 1, ), Text( "¥$mRaiseMoney", style: TextStyle( fontSize: 14.sp, fontFamily: 'JDZhengHT', color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.medium, ), ), SizedBox( width: 10, ), Text( S.of(context).zhunongjifen, style: TextStyle( fontSize: 14.sp, color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535), fontWeight: MyFontWeight.semi_bold, ), ), ], ), ), if(mRaiseMoney !="0" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))) if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)) GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { setState(() { checkIndex = 5; widget.payChannelCheck(1); }); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ checkView(5), Spacer(), Image.asset("assets/image/icon_we_chat.webp"), Padding( padding: EdgeInsets.only(left: 8.w), child: Text( S.of(context).weixinzhifu, style: TextStyle( fontSize: 14.sp, color: Color(0xff353535), fontWeight: MyFontWeight.semi_bold, ), ), ), ], ), ), ], ), ); } var checkIndex = 5; Widget checkView(var index, {bool isHide = false}) { if (isHide) { return Container( padding: EdgeInsets.only(right:36.w), alignment: Alignment.center, ); } return Container( padding: EdgeInsets.only(right:36.w), alignment: Alignment.center, child: Image.asset( checkIndex != index ? "assets/image/icon_radio_unselected.webp" : "assets/image/icon_radio_selected.webp", width: 15.w, height: 15.h, ), ); } }