import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ImUtils {
  /// 日期格式化
  static String formatDate(int millisecondsSinceEpoch,
      {bool isformatFull = false}) {
    if (millisecondsSinceEpoch.toString().length <= 10) {
      millisecondsSinceEpoch =
          int.parse(millisecondsSinceEpoch.toString() + '000');
    }
    if (millisecondsSinceEpoch == null) return "";
    int dateTimeStamp = millisecondsSinceEpoch;
    int minute = 1000 * 60;
    int hour = minute * 60;
    int day = hour * 24;
    int now = DateTime.now().millisecondsSinceEpoch;
    int diffValue = now - dateTimeStamp;
    var dayC = diffValue / day ~/ 1;
    String result;
    DateTime date = DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch);
    if (dayC >= 1 || isformatFull) {
      result =
          "${date.year}-${date.month < 10 ? "0" + date.month.toString() : date.month}-${date.day < 10 ? "0" + date.day.toString() : date.day} ${date.hour}:${date.minute < 10 ? "0" + date.minute.toString() : date.minute}";
    } else {
      String firstString = "";
      if (date.hour > 1 && date.hour <= 6) {
        firstString = "凌晨 ";
      } else if (date.hour > 6 && date.hour <= 11) {
        firstString = "早上 ";
      } else if (date.hour > 11 && date.hour <= 12) {
        firstString = "中午 ";
      } else if (date.hour > 12 && date.hour <= 18) {
        firstString = "下午 ";
      } else if (date.hour > 18 && date.hour <= 23) {
        firstString = "晚上 ";
      }
      result = firstString +
          "${date.hour}:${date.minute < 10 ? "0" + date.minute.toString() : date.minute}";
    }
    return result;
  }

  /// 普通询问弹窗
  /// * [title] 标题
  /// * [content] 内容
  /// * [cancelText] 撤销文字 默认 = 取消
  /// * [confirmText] 确定文字 默认 = 确定
  static void alert(
    context, {
    String title = "温馨提示!",
    dynamic content,
    String cancelText = '取消',
    String confirmText = '确定',
    bool isConfirmPop = true,
    bool isShowCancel = true,
    VoidCallback onCancel,
    VoidCallback onConfirm,
  }) {
    showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          ThemeData themeData = Theme.of(context);
          List<Widget> actions = [];
          if (isShowCancel) {
            actions.add(CupertinoDialogAction(
              child: Text(cancelText),
              isDestructiveAction: true,
              onPressed: () {
                Navigator.pop(context);
                if (onCancel != null) onCancel();
              },
            ));
          }
          actions.add(CupertinoDialogAction(
            child: Text(
              confirmText,
              style: TextStyle(color: themeData.primaryColor),
            ),
            isDefaultAction: true,
            onPressed: () {
              if (isConfirmPop) Navigator.pop(context);
              if (onConfirm != null) onConfirm();
            },
          ));
          return CupertinoAlertDialog(
            title: title.isEmpty
                ? null
                : Padding(
                    padding: EdgeInsets.only(bottom: 10.0),
                    child: Text(title,
                        style:
                            themeData.textTheme.title.copyWith(fontSize: 16.0)),
                  ),
            content: content is Widget ? content : Text('$content'),
            actions: actions,
          );
        });
  }
}