import 'dart:convert'; import 'package:barcode_widget/barcode_widget.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/data/coupon_detail.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:huixiang/view_widget/separator.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:qr_flutter/qr_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; class WriteOffPage extends StatefulWidget { final arguments; WriteOffPage({this.arguments}); @override State createState() { return _WriteOffPage(); } } class _WriteOffPage extends State { dynamic coupon; ApiService apiService; CouponDetail queryCoupon; @override void initState() { super.initState(); coupon = jsonDecode(widget.arguments["coupon"]); if (mounted) setState(() {}); queryCouponDetail(coupon["memberCouponId"]); } ///查询核销券状态/查询优惠券详情 queryCouponDetail(memberCouponId) async { if (apiService == null) { SharedPreferences value = await SharedPreferences.getInstance(); apiService = ApiService( Dio(), context: context, token: value.getString("token"), ); } BaseData baseData = await apiService.couponDetail(memberCouponId); if (baseData != null && baseData.isSuccess) { setState(() { queryCoupon = baseData.data; if(queryCoupon.status==2){ Navigator.of(context).pop(true); } else Future.delayed(Duration(seconds: 1), () { queryCouponDetail(coupon["memberCouponId"]); }); }); } else { SmartDialog.showToast(baseData.msg, alignment: Alignment.center); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Color(0xFF32A060), appBar: MyAppBar( title: S.of(context).hexiaomaxiangqing, titleSize: 18.sp, titleColor: Colors.white, background: Color(0xFF32A060), leadingColor: Colors.white, ), body: Container( alignment: Alignment.topCenter, child: Stack( alignment: Alignment.topCenter, children: [ Image.asset( "assets/image/icon_write_off_bg.png", width: MediaQuery.of(context).size.width * 0.912, fit: BoxFit.fill, ), LayoutBuilder(builder: (context, constraints) { return Container( width: constraints.constrainWidth() * 0.912, child: Column( children: [ Expanded( child: Container( child: Column( children: [ Text( coupon != null ? coupon["couponName"] : "", style: TextStyle( fontSize: 16.sp, fontWeight: FontWeight.bold, color: Color(0xFF353535)), ), SizedBox( height: 8.h, ), Text( (coupon["useStartTime"] == null || coupon["useEndTime"] == null) ? "" : S.of(context).youxiaoqi( "${coupon["useStartTime"].replaceAll("-", ".").split(" ")[0]}-${coupon["useEndTime"].replaceAll("-", ".").split(" ")[0]}"), style: TextStyle( fontSize: 12.sp, color: Color(0xFF353535), ), ), ], mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, ), alignment: Alignment.center, ), flex: 6, ), Container( margin: EdgeInsets.only(left: 20.w, right: 20.w), child: MySeparator( width: 5.w, height: 1.h, color: Color(0xFFA29E9E), ), ), Expanded( child: Container( alignment: Alignment.center, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( coupon != null ? "${coupon["memberCouponId"].substring(0, 4)} " "${coupon["memberCouponId"].substring(4, 8)} " "${coupon["memberCouponId"].substring(8, 12)} " "${coupon["memberCouponId"].substring(12, 16)} " "${coupon["memberCouponId"].substring(16, coupon["memberCouponId"].length)}" : "", style: TextStyle( fontSize: 14.sp, wordSpacing: coupon == null ? 10 : (MediaQuery.of(context).size.width - 64.w) / (((coupon["memberCouponId"].length) * 4)), letterSpacing: coupon == null ? 8 : (MediaQuery.of(context).size.width - 64.w) / (((coupon["memberCouponId"].length) * 4)), fontWeight: MyFontWeight.semi_bold, color: Color(0xFF353535), ), ), SizedBox( height: 12.h, ), BarcodeWidget( barcode: Barcode.code128(useCode128C: true), data: coupon != null ? coupon["memberCouponId"] : "", height: 72.h, color: Colors.black, drawText: false, ), SizedBox( height: 16.h, ), Expanded(child: QrImage( data: "{\"type\":\"wiped\",\"memberCouponId\":\"${coupon["memberCouponId"]}\"}", version: QrVersions.auto, size: 200.w, gapless: true, ),), SizedBox( height: 35.h, ), ], ), margin: EdgeInsets.symmetric(horizontal: 20.w), ), flex: 27, ), Container( child: MySeparator( width: 5.w, height: 1.h, color: Color(0xFFA29E9E), ), margin: EdgeInsets.only(left: 20.w, right: 20.w), ), Expanded( child: Container( padding: EdgeInsets.fromLTRB(20.w, 15.h, 20.w, 15.h), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( width: 3.w, height: 15.h, margin: EdgeInsets.fromLTRB(4.w, 7.h, 4.w, 7.h), decoration: BoxDecoration( borderRadius: BorderRadius.circular(3), color: Color(0xFF20662A), ), ), Text( S.of(context).shiyongtiaojian, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 14.sp, color: Color(0xFF353535), ), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( width: 11.w, ), Expanded( child: Text( S .of(context) .qianwanghuixiangmendianduihuanhexiao, style: TextStyle( textBaseline: TextBaseline.alphabetic, fontSize: 14.sp, color: Color(0xFF353535)), ), flex: 1, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( width: 3.w, height: 15.h, margin: EdgeInsets.fromLTRB(4, 7, 4, 7), decoration: BoxDecoration( borderRadius: BorderRadius.circular(3), color: Color(0xFF20662A), ), ), Text( S.of(context).shiyongshuoming, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 14.sp, color: Color(0xFF353535)), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( width: 11.w, ), Text( S.of(context).zitiduihuanquan, style: TextStyle( textBaseline: TextBaseline.alphabetic, fontSize: 14.sp, color: Color(0xFF353535), ), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( width: 11.w, ), Text( S.of(context).huixiangrenyimendian, style: TextStyle( textBaseline: TextBaseline.alphabetic, fontSize: 14.sp, color: Color(0xFF353535), ), ), ], ), ], ), ), flex: 13, ), Expanded( child: Container(), flex: 3, ), ], ), ); }) ], ), ), ); } }