import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:location/base/base_page.dart';
import 'package:location/data/bean/contact_info.dart';
import 'package:location/module/urgent_contact/urgent_contact_controller.dart';
import 'package:location/resource/assets.gen.dart';
import 'package:location/utils/common_expand.dart';
import 'package:location/widget/common_view.dart';
import '../../resource/colors.gen.dart';
import '../../resource/string.gen.dart';
import '../../router/app_pages.dart';

class UrgentContactPage extends BasePage<UrgentContactController> {
  const UrgentContactPage({super.key});

  static void start({String isShowRequest = "0"}) {
    Get.toNamed(RoutePath.urgentContact,parameters: {"isShowRequest" : isShowRequest});
  }

  @override
  bool immersive() {
    return true;
  }

  @override
  Widget buildBody(BuildContext context) {
    return Obx(() {
      if (controller.contactList.isEmpty) {
        return urgentEmptyView();
      } else {
        return urgentListView();
      }
    });
  }

  Widget urgentListView() {
    return Container(
      decoration: BoxDecoration(
        gradient: LinearGradient(
            colors: [ColorName.white, '#F7F7F7'.color, '#F7F7F7'.color],
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter),
      ),
      child: Stack(
        children: [
          Assets.images.bgPageBackground.image(width: 1.sw),
          Positioned(
            top: 0,
            right: 35.w,
            child: SafeArea(
                child: Assets.images.bgUrgentContactLogo
                    .image(width: 145.w, height: 145.w)),
          ),
          SafeArea(
            child: Column(
              children: [
                CommonView.buildAppBar("", backOnTap: controller.back),
                Expanded(
                    child: ListView(
                  children: [
                    SizedBox(height: 25.h),
                    buildAddContact(),
                    SizedBox(height: 20.w),
                    Padding(
                      padding: EdgeInsets.only(left: 17.w),
                      child: Text(
                        StringName.urgentContactSubtitle,
                        style: TextStyle(
                            fontSize: 16.sp,
                            color: ColorName.black90,
                            fontWeight: FontWeight.bold),
                      ),
                    ),
                    SizedBox(height: 14.w),
                    ...controller.contactList.map((e) => buildContactItem(e))
                  ],
                )),
                Container(
                  padding: EdgeInsets.only(
                      left: 15.w, right: 15.w, top: 10.w, bottom: 15.w),
                  width: double.infinity,
                  decoration: BoxDecoration(
                    color: ColorName.white,
                    boxShadow: [
                      BoxShadow(
                          color: ColorName.black.withOpacity(0.1),
                          offset: Offset(20, 20),
                          blurRadius: 10)
                    ],
                  ),
                  child: GestureDetector(
                    onTap: () => controller.sendAllHelpClick(),
                    child: Container(
                      decoration: BoxDecoration(
                        color: '#FF5555'.color,
                        borderRadius: BorderRadius.circular(10.w),
                      ),
                      height: 46.w,
                      child: Center(
                        child: Text(StringName.urgentContactSendHelp,
                            style: TextStyle(
                                fontSize: 14.sp, color: ColorName.white)),
                      ),
                    ),
                  ),
                )
              ],
            ),
          )
        ],
      ),
    );
  }

  Widget buildContactItem(ContactInfo e) {
    return Container(
      decoration: BoxDecoration(
          color: ColorName.white,
          borderRadius: BorderRadius.circular(11.w),
          boxShadow: [
            BoxShadow(
                color: ColorName.black.withOpacity(0.03),
                offset: Offset(2, 2),
                blurRadius: 2)
          ]),
      margin: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 10.w),
      padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 16.w),
      child: Row(
        children: [
          Assets.images.iconDefaultFriendAvatar
              .image(width: 48.w, height: 48.w),
          SizedBox(width: 8.w),
          Text(e.remark ?? e.phone,
              style: TextStyle(
                  fontSize: 14.sp,
                  color: ColorName.black90,
                  fontWeight: FontWeight.bold)),
          SizedBox(width: 8.w),
          Visibility(
            visible: e.favor == true,
            child: Container(
                decoration: BoxDecoration(
                    color: '#1F969696'.color,
                    borderRadius: BorderRadius.circular(4.w)),
                padding: EdgeInsets.symmetric(horizontal: 9.w, vertical: 3.w),
                child: Text(StringName.urgentContactDefaultSelected,
                    style: TextStyle(fontSize: 12.sp, color: '#858585'.color))),
          ),
          Spacer(),
          GestureDetector(
            onTap: () => controller.sendHelpClick(e.phone),
            child: Assets.images.iconUrgentContactDialPhone
                .image(width: 40.w, height: 40.w),
          ),
          SizedBox(width: 16.w),
          Builder(builder: (context) {
            return GestureDetector(
                onTap: () => controller.moreClick(context, e),
                child: Assets.images.iconUrgentContactMore
                    .image(width: 24.w, height: 24.w));
          })
        ],
      ),
    );
  }

  Widget urgentEmptyView() {
    return SafeArea(
      child: Column(
        children: [
          CommonView.buildAppBar(StringName.urgentContactTitle,
              backOnTap: controller.back),
          SizedBox(height: 40.h),
          Assets.images.bgUrgentContactEmpty.image(width: 268.w, height: 250.w),
          SizedBox(height: 37.h),
          Text(StringName.urgentContactOnceClickHelp,
              style: TextStyle(
                  fontSize: 18.sp,
                  color: '#FF4B34'.color,
                  fontWeight: FontWeight.bold)),
          SizedBox(height: 21.h),
          SizedBox(
            width: 261.w,
            child: Text(StringName.urgentContactOnceClickHelpDesc,
                style: TextStyle(
                  fontSize: 13.sp,
                  color: ColorName.black90,
                )),
          ),
          SizedBox(height: 60.h),
          GestureDetector(
            onTap: controller.addContactClick,
            child: Container(
              decoration: BoxDecoration(
                  color: ColorName.colorPrimary,
                  borderRadius: BorderRadius.circular(10.w)),
              width: 320.w,
              height: 42.w,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Assets.images.iconUrgentAdd.image(width: 12.w, height: 12.w),
                  SizedBox(width: 5.w),
                  Text(StringName.urgentContactBtnTxt,
                      style:
                          TextStyle(fontSize: 14.sp, color: ColorName.white)),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }

  Widget buildAddContact() {
    return GestureDetector(
      onTap: controller.addContactClick,
      child: Container(
        height: 66.w,
        decoration: BoxDecoration(boxShadow: [
          BoxShadow(
              color: ColorName.black.withOpacity(0.06),
              offset: Offset(0, 2),
              blurRadius: 10)
        ], color: ColorName.white, borderRadius: BorderRadius.circular(10.w)),
        margin: EdgeInsets.symmetric(horizontal: 12.w),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SizedBox(
              width: 52.w,
              height: 52.w,
              child: Stack(
                children: [
                  Assets.images.bgUrgentContactAdd
                      .image(width: double.infinity, height: double.infinity),
                  Center(
                    child: Assets.images.iconUrgentContactAdd
                        .image(width: 28.w, height: 28.w),
                  ),
                ],
              ),
            ),
            SizedBox(width: 18.w),
            Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  StringName.urgentContactTitle,
                  style: TextStyle(
                      fontSize: 14.sp,
                      color: ColorName.black90,
                      fontWeight: FontWeight.bold),
                ),
                SizedBox(height: 3.w),
                Text(StringName.urgentContactAddDesc,
                    style:
                        TextStyle(fontSize: 12.sp, color: ColorName.black70)),
              ],
            )
          ],
        ),
      ),
    );
  }
}
