import 'package:farmer_client/models/entities/Address.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get_rx/src/rx_typedefs/rx_typedefs.dart';

class AddressCard extends StatefulWidget {
  final Address item;
  final int No;
  final bool isBack;
  final GestureTapCallback onChange;
  final GestureTapCallback onDelete;
  final GestureTapCallback onEdit;
  final GestureTapCallback onBack;
  const AddressCard(
      {Key? key,
      required this.item,
      required this.No,
      required this.isBack,
      required this.onChange,
      required this.onDelete,
      required this.onEdit,
      required this.onBack})
      : super(key: key);

  @override
  _AddressCard createState() =>
      _AddressCard(item, No, onChange, onDelete, onEdit, isBack, onBack);
}

class _AddressCard extends State<AddressCard> {
  final Address item;
  final int No;
  final bool isBack;
  final GestureTapCallback onChange;
  final GestureTapCallback onDelete;
  final GestureTapCallback onEdit;
  final GestureTapCallback onBack;
  _AddressCard(this.item, this.No, this.onChange, this.onDelete, this.onEdit,
      this.isBack, this.onBack);
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 345.w,
      padding: EdgeInsets.all(15.w),
      margin: EdgeInsets.fromLTRB(0, 0, 0, 15.w),
      decoration: BoxDecoration(
        color: const Color(0xFFFFFFFF),
        borderRadius: BorderRadius.all(Radius.circular(10.w)),
        boxShadow: [
          BoxShadow(
              color: const Color(0x19000000),
              offset: Offset(0, 5.w),
              blurRadius: 12.w),
        ],
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            children: [
              if (item.isDefault == true)
                Container(
                  margin: EdgeInsets.fromLTRB(0, 0, 5.w, 0),
                  padding: EdgeInsets.symmetric(vertical: 1.w, horizontal: 5.w),
                  decoration: BoxDecoration(
                    color: const Color(0xffff0000),
                    borderRadius: BorderRadius.all(Radius.circular(5.w)),
                  ),
                  child: Text(
                    '默认地址',
                    style: TextStyle(
                      fontSize: 15.sp,
                      fontWeight: FontWeight.bold,
                      color: const Color(0xffffffff),
                    ),
                  ),
                ),
              Text(
                '我的地址' + No.toString(),
                style: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w700),
              ),
            ],
          ),
          GestureDetector(
            onTap: onEdit,
            child: Container(
              padding: EdgeInsets.symmetric(vertical: 5.h, horizontal: 0),
              decoration: BoxDecoration(
                border: Border(
                  bottom: BorderSide(
                      width: 1.h,
                      color: const Color(0xcc000000),
                      style: BorderStyle.solid),
                ),
              ),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Container(
                    padding: EdgeInsets.symmetric(vertical: 5.w, horizontal: 0),
                    width: 282.w,
                    child: Text(
                      item.address.toString(),
                      //最多显示两行
                      maxLines: 2,
                      //多余文本用点点点表示
                      overflow: TextOverflow.ellipsis,
                      style: TextStyle(
                        fontSize: 15.sp,
                        color: const Color(0xff666666),
                      ),
                    ),
                  ),
                  Image.asset(
                    'images/icons/edit.png',
                    width: 33.w,
                    height: 33.w,
                  ),
                ],
              ),
            ),
          ),
          if (isBack)
            GestureDetector(
              onTap: onBack,
              child: Container(
                width: 315.w,
                margin: EdgeInsets.fromLTRB(0, 5.w, 0, 0),
                child: Text(
                  '选择此地址',
                  style:
                      TextStyle(fontSize: 17.sp, fontWeight: FontWeight.w800),
                ),
              ),
            ),
          if (!isBack)
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                GestureDetector(
                  onTap: onChange,
                  child: Row(
                    children: [
                      const Text('设为默认地址'),
                      Radio<bool>(
                          value: true,
                          activeColor: const Color(0xFFFF703B),
                          groupValue: item.isDefault,
                          onChanged: (value) {
                            onChange();
                          }),
                    ],
                  ),
                ),
                GestureDetector(
                  onTap: onDelete,
                  child: Row(
                    children: [
                      const Text('删除'),
                      Image.asset(
                        'images/icons/delete.png',
                        width: 25.w,
                        height: 25.w,
                      ),
                    ],
                  ),
                ),
              ],
            ),
        ],
      ),
    );
  }
}
