import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:keyboard/resource/string.gen.dart';
import 'package:keyboard/utils/toast_util.dart';

import '../resource/assets.gen.dart';
import '../resource/colors.gen.dart';
import '../utils/styles.dart';

class CustomLabelDialog {
  static const String tag = 'CustomLabelDialog';

  // 文本是否为空


  static void show({
    String? title,
    required Function(String) clickCallback,
    required String hintText,
    required int maxLength,
  }) {
    TextEditingController textController = TextEditingController();
    RxBool isTextEmpty = true.obs;
    textController.addListener(() {
      isTextEmpty.value = textController.text.trim().isEmpty;
    });
    SmartDialog.show(
      tag: tag,
      alignment: Alignment.center,
      backType: SmartBackType.block,
      clickMaskDismiss: true,
      maskColor: ColorName.black70,
      builder: (_) {
        return Container(
          width: double.infinity,
          margin: EdgeInsets.symmetric(horizontal: 31.w),
          decoration: ShapeDecoration(
            color: Colors.white,
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(20.r),
            ),
          ),
          child: Stack(
            children: [
              Container(
                padding: EdgeInsets.symmetric(
                  horizontal: 16.w,
                  vertical: 24.h,
                ),
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Text(
                      title ?? StringName.customLabel,
                      style: TextStyle(
                        color: Colors.black.withAlpha(204),
                        fontSize: 16.sp,
                        fontWeight: FontWeight.w500,
                      ),
                    ),
                    SizedBox(height: 16.h),
                    Container(
                      height: 48.h,
                      alignment: Alignment.center,
                      decoration: ShapeDecoration(
                        color: const Color(0xFFF5F4F9),
                        shape: RoundedRectangleBorder(
                          borderRadius: BorderRadius.circular(31.r),
                        ),
                      ),
                      child: TextField(
                        controller: textController,
                        maxLength: maxLength,
                        maxLines: 1,
                        scrollPhysics: const BouncingScrollPhysics(),
                        textAlign: TextAlign.center,
                        textAlignVertical: TextAlignVertical.center,
                        decoration: InputDecoration(
                          isDense: true,
                          counterText: "",
                          hintText: hintText,
                          hintStyle: TextStyle(
                            color: Colors.black.withAlpha(66),
                          ),
                          border: OutlineInputBorder(
                            borderRadius: BorderRadius.circular(10.r),
                            borderSide: BorderSide.none, // 移除边框线
                          ),
                          filled: true,
                          fillColor: const Color(0xFFF5F4F9),
                        ),
                      ),
                    ),
                    SizedBox(height: 24.h),
                    Obx(() {
                      return Container(
                        height: 48.h,
                        width: double.infinity,
                        decoration:
                        isTextEmpty.value
                            ? Styles.getInactiveButtonDecoration(
                          31.r,
                        )
                            : Styles.getActivateButtonDecoration(
                          31.r,
                        ),

                        child: TextButton(
                          onPressed: () {
                            if (textController.text.isEmpty) {
                              return ToastUtil.show(hintText);
                            }
                            if (textController.text.length > maxLength) {
                              return ToastUtil.show(
                                  '最多$maxLength个字哦~');
                            }

                            clickCallback(textController.text.trim());
                            SmartDialog.dismiss();
                          },
                          child: Text(
                            StringName.customLabelSave,
                            style: TextStyle(
                              color: Colors.white,
                              fontSize: 16.sp,
                              fontWeight: FontWeight.w500,
                            ),
                          ),
                        ),
                      );
                    }),
                  ],
                ),
              ),
              Positioned(
                right: 14,
                top: 14,

                child: GestureDetector(
                  onTap: () {
                    SmartDialog.dismiss();
                  },
                  child: Assets.images.iconCustomDialogClose.image(
                    width: 24.w,
                    height: 24.h,
                  ),
                ),
              ),
            ],
          ),
        );
      },
    );
  }
}
