import 'package:flutter/material.dart';
import 'package:liftmanager/res/colors.dart';
import 'package:liftmanager/utils/utils.dart';

class CalendarTile extends StatelessWidget {
  final VoidCallback onDateSelected;
  final DateTime date;
  final String dayOfWeek;
  final bool isDayOfWeek;
  final bool isSelected;
  final TextStyle dayOfWeekStyles;
  final TextStyle dateStyles;
  final Widget child;
  final Color weekBgColor;
  final Color weekTextColor;
  final int mtState; //0：无状态 1：待完成 2：正常 3：超期

  CalendarTile(
      {this.onDateSelected,
        this.date,
        this.child,
        this.dateStyles,
        this.dayOfWeek,
        this.dayOfWeekStyles,
        this.isDayOfWeek: false,
        this.isSelected: false,
        this.weekBgColor,
        this.weekTextColor,
        this.mtState = 0});

  Widget renderDateOrDayOfWeek(BuildContext context) {
    if (isDayOfWeek) {
      return new InkWell(
        child: new Container(
          height: 45,
          alignment: Alignment.center,
          child: new Text(
            dayOfWeek,
            style: dayOfWeekStyles,
          ),
        ),
      );
    } else {
      return new InkWell(
        onTap: onDateSelected,
        child: new Container(
          color: Colors.white,
          height: 45,
          alignment: Alignment.center,
          child: Container(
              width: 35,
              height: 35,
              decoration: isSelected
                  ? BoxDecoration(
                  shape: BoxShape.circle, color: Colours.app_main)
                  : mtState == 1
                  ? BoxDecoration(
                  borderRadius: BorderRadius.circular(18),
                  border: Border.all(
                      color: Colours.text_gray,
                      style: BorderStyle.solid,
                      width: 2))
                  : mtState == 2
                  ? BoxDecoration(
                  borderRadius: BorderRadius.circular(18),
                  border: Border.all(
                      color: Colors.yellow,
                      style: BorderStyle.solid,
                      width: 2))
                  : mtState == 3
                  ? BoxDecoration(
                  borderRadius:
                  BorderRadius.circular(18),
                  border: Border.all(
                      color: Color(0xFF9CD19E),
                      style: BorderStyle.solid,
                      width: 2))
                  : mtState == 4
                  ? BoxDecoration(
                  borderRadius:
                  BorderRadius.circular(18),
                  border: Border.all(
                      color: Colors.red,
                      style: BorderStyle.solid,
                      width: 2))
                  : BoxDecoration(),
              alignment: Alignment.center,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(
                    Utils.formatDay(date).toString(),
                    style: isSelected
                        ? new TextStyle(color: Colors.white)
                        : dateStyles,
                    textAlign: TextAlign.center,
                  ),

                ],
              )),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    if (child != null) {
      return new InkWell(
        child: child,
        onTap: onDateSelected,
      );
    }
    return new Container(
      child: renderDateOrDayOfWeek(context),
    );
  }
}
