import 'dart:async';

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:project_telephony/ui/home/content_connect_page.dart';
import 'package:project_telephony/ui/home/content_refuse_page.dart';
import 'package:project_telephony/ui/user/privacy_rights_page.dart';
import 'package:project_telephony/ui/user/privacy_rights_page.dart';

import 'package:project_telephony/utils/headers.dart';

import '../user/privacy_rights_page.dart';

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

bool sms = false;
bool plone = false;

@override
class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    //页面初始化的时候，添加一个状态的监听者
    WidgetsBinding.instance.addObserver(this);
    _listenForPermissionStatus();
    setState(() {});
  }

  @override
  void dispose() {
    super.dispose();
    //页面销毁时移出监听者
    WidgetsBinding.instance.removeObserver(this);
  }

  Future<void> _listenForPermissionStatus() async {
    sms = await Permission.sms.request().isGranted;
    plone = await Permission.phone.request().isGranted;
    callLog = await Permission.callLog.request().isGranted;
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        extendBodyBehindAppBar: true,
        extendBody: true,
        body: SafeArea(
          child: Stack(
            // fit: StackFit.expand,
            children: [
              Positioned(
                top: 10.w,
                child:
                    // Container(
                    //   height: 722.w,
                    //   width: 722.w,
                    //   decoration: BoxDecoration(image: DecorationImage(image:AssetImage(Assets.images.homeBg.path),fit:BoxFit.fill)),
                    //   child: _warning(),)
                    Image.asset(
                  Assets.images.homeBg.path,
                  height: 722.w,
                  width: 722.w,
                ),
              ),
              Positioned(top: 48.w, child: _warning()),
              Positioned(bottom: 64.w, child: _getBody()),
              Align(
                child: SizedBox(
                  width: double.infinity,
                  height: 1600.w,
                ),
              )
            ],
          ),
        ));
  }

  // bool _getPermissions() {
  //   if(sms && plone){
  //     return  true;
  //   }else{
  //     return false;
  //   }
  // }
  _warning() {
    return Offstage(
      offstage: (sms && plone && callLog),
      child: GestureDetector(
        onTap: () {
          // print();
          openAppSettings();
        },
        child: Container(
          margin: EdgeInsets.symmetric(horizontal: 64.w),
          padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 20.w),
          height: 88.w,
          decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(8.w),
              color: const Color(0xFFFFF2F2),
              border: Border.all(width: 1.w, color: const Color(0xFFFFC8C8))),
          child: Row(
            children: [
              Image(
                image: AssetImage(Assets.icons.horn.path),
                width: 48.w,
                height: 48.w,
              ),
              16.wb,
              Text(
                "必须权限没有授予，本APP无法正常使用",
                style:
                    TextStyle(color: const Color(0xFFFF3F3F), fontSize: 24.sp),
              ),
              32.wb,
              Image(
                image: AssetImage(Assets.icons.right.path),
                width: 28.w,
                height: 28.w,
                fit: BoxFit.fill,
              )
            ],
          ),
        ),
      ),
    );
  }

  _getBody() {
    return Container(
      padding: EdgeInsets.symmetric(horizontal: 64.w),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            "短信帮手",
            style: TextStyle(
                fontSize: 64.sp,
                color: const Color(0xFF333333),
                fontWeight: FontWeight.bold),
          ),
          8.hb,
          Text(
            "希望能成为您的短信小助手",
            style: TextStyle(fontSize: 32.sp, color: const Color(0xFF999999)),
          ),
          50.hb,
          _getContainer("接听后", "编辑接听后发送的短信内容", Assets.images.answer.path,
              const Color(0xFF74BCFF), const Color(0xFF1890FF)),
          30.hb,
          _getContainer("拒接/未接后", "编辑拒接/未接后发送的短信内容", Assets.images.refused.path,
              const Color(0xFF72E4C8), const Color(0xFF13CA9D))
        ],
      ),
    );
  }

  _getContainer(String title, String text, String image, Color cl1, Color cl2) {
    return GestureDetector(
        onTap: () {
          print(title);
          if (title == "接听后") {
            Get.to(() => const ContentConnectPage());
          } else {
            Get.to(() => const ContentRefusePage());
            print("未接听");
          }
        },
        child: Container(
            decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(16.w),
                gradient: LinearGradient(
                    begin: Alignment.centerLeft,
                    end: Alignment.centerRight,
                    colors: [cl1, cl2])),
            width: 622.w,
            height: 192.w,
            child: Row(
              children: [
                Container(
                  padding: EdgeInsets.only(top: 40.w, left: 50.w),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(title,
                          style: TextStyle(
                              fontSize: 36.sp,
                              color: const Color(0xFFFFFFFF),
                              fontWeight: FontWeight.bold)),
                      16.hb,
                      Text(
                        text,
                        style: TextStyle(
                            fontSize: 27.sp,
                            color: const Color(0xFFFFFFFF).withOpacity(0.6)),
                      ),
                    ],
                  ),
                ),
                const Spacer(),
                Padding(
                  padding: EdgeInsets.only(top: 40.w),
                  child: Image.asset(
                    image,
                    width: 166.w,
                    height: 152.w,
                    fit: BoxFit.fill,
                  ),
                ),
              ],
            )));
  }
}
