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<StatefulWidget> createState() {
    return _WriteOffPage();
  }
}

class _WriteOffPage extends State<WriteOffPage> {
  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.webp",
              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,
                    ),
                  ],
                ),
              );
            })
          ],
        ),
      ),
    );
  }
}