import 'package:flutter/material.dart';
import 'package:project_telephony/base/base_style.dart';
import 'package:project_telephony/utils/headers.dart';

typedef ItemCallback = Function(ChooseItems item, int index);

class ChooseItems {
  int month;
  double pice;
  bool isChoose;

  ChooseItems({
    required this.month,
    required this.pice,
    this.isChoose = false,
  });
}

class SortWidget extends StatelessWidget {
  final List<ChooseItems> itemList;
  final ItemCallback callback;
  final int crossAxisCount;
  final double mainAxisSpacing;
  final double crossAxisSpacing;
  final double childAspectRatio;
  final bool haveButton;
  final ChooseItems? pickItem;

  const SortWidget(
      {Key? key,
      required this.itemList,
      required this.callback,
      required this.crossAxisCount,
      required this.mainAxisSpacing,
      required this.crossAxisSpacing,
      required this.childAspectRatio,
      this.haveButton = false,
      required this.pickItem});


  @override
  Widget build(BuildContext context) {
    return GridView.builder(
        physics: const NeverScrollableScrollPhysics(),
        shrinkWrap: true,
        padding: EdgeInsets.zero,
        itemCount: itemList.length,
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            //横轴元素个数
            crossAxisCount: crossAxisCount,
            //纵轴间距
            mainAxisSpacing: mainAxisSpacing,
            //横轴间距
            crossAxisSpacing: crossAxisSpacing,
            //子组件宽高长度比例
            childAspectRatio: childAspectRatio),
        itemBuilder: (BuildContext context, int index) {
          return _getItem(itemList[index], index);
        });
  }

  _getItem(ChooseItems item, int index) {
    return GestureDetector(
      onTap: () {
        callback(item, index);
      },
      child: Container(
          alignment: Alignment.center,
          decoration: BoxDecoration(
              color: pickItem == item
                  ? const Color(0xFFFFFAEA)
                  : const Color(0xFFFFFFFF),
              borderRadius: BorderRadius.circular(4.w),
              border: pickItem != item
                  ? Border.all(color: const Color(0xFFF5F5F5), width: 1.w)
                  : Border.all(color: const Color(0xFFFFDF66), width: 1.w)),
          child: Column(
            children: [
              Padding(padding: EdgeInsets.only(top: 32.w)),
              Text(
                "${item.month}个月VIP",
                style: TextStyle(
                    fontFamily: "SemiBold",
                    fontSize: BaseStyle.fontSize28,
                    color: BaseStyle.color333333,
                    fontWeight: FontWeight.bold),
              ),
              Text.rich(TextSpan(children: [
                TextSpan(
                    text: "¥",
                    style: TextStyle(
                        fontSize: BaseStyle.fontSize32,
                        color: pickItem == item
                            ? const Color(0xFFFF3F3F)
                            : BaseStyle.color333333)),
                TextSpan(
                    text: "${item.pice}",
                    style: TextStyle(
                        fontFamily: "SemiBold",
                        fontSize: 64.sp,
                        color: pickItem == item
                            ? const Color(0xFFFF3F3F)
                            : BaseStyle.color333333))
              ])),
              Text("${(item.pice / item.month).toStringAsFixed(2)}元/月",
                  style: TextStyle(
                    fontSize: BaseStyle.fontSize24,
                    color: BaseStyle.color999999,
                  )),
            ],
          )),
    );
  }
}