import 'dart:async';

import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart';
import 'package:flutter_background_service/flutter_background_service.dart';
import 'package:package_info/package_info.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/home/set/phone_set_page.dart';
import 'package:project_telephony/ui/user/privacy_rights_page.dart';
import 'package:project_telephony/ui/widget/appdialog.dart';

import 'package:project_telephony/ui/widget/plone_bottom.dart';

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

import '../tab_navigator.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;
bool addressBook=false;
bool kg = false;

final service = FlutterBackgroundService();

@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;
    addressBook=  await Permission.contacts.request().isGranted;
    kg = await service.isRunning();
    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(child: PloneBottom(onTap: (){
              //   showDialog(context: context, builder: (context){
              //     return const AppDialog();
              //   });
              //
              // })),
              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;
  //   }
  // }
  // String _text(){
  //   if(!(sms && plone && callLog && kg)){
  //    if(!(sms && plone && callLog )){
  //      return "";
  //      // return "必须权限没有授予,本APP无法正常使用";
  //    }if(!kg){
  //      return "功能开关未开启";
  //    }
  //   }else{
  //     return "";
  //   }
  // }
  _warning() {
    return Offstage(

      offstage: (sms && plone && callLog && addressBook && kg),
      child: GestureDetector(
        onTap: () {
          if (!(sms && plone && callLog && addressBook && kg)) {
            if (!(sms && plone && callLog && addressBook)) {
              Get.to(() => const PrivacyRightsPage(name: "权限说明"));
              // Get.to(()=>const TabNavigator(index: 1,));
            } else {
              BotToast.showText(text: '功能开关未开启');
            }
          }

          // openAppSettings();
        },
        child: Container(
          width: 622.w,
          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(
                !(sms && plone && callLog && addressBook)
                    ? "必须权限没有授予,本APP无法正常使用"
                    : "功能开关未开启,请到我的页面开启",
                style:
                    TextStyle(color: const Color(0xFFFF3F3F), fontSize: 24.sp),
              ),
              !(sms && plone && callLog && addressBook) ? 32.wb : 0.wb,
              !(sms && plone && callLog && addressBook)
                  ? Image(
                      image: AssetImage(Assets.icons.right.path),
                      width: 28.w,
                      height: 28.w,
                      fit: BoxFit.fill,
                    )
                  : const SizedBox()
            ],
          ),
        ),
      ),
    );
  }

  _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),
          ),
          24.hb,
          Text(
            "希望能成为您的短信小助手",
            style: TextStyle(fontSize: 32.sp, color: const Color(0xFF999999)),
          ),
          48.hb,
          _getSet(),
          32.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))
        ],
      ),
    );
  }

  _getSet() {
    return GestureDetector(
      onTap: (){
        Navigator.of(context)
            .push(
          MaterialPageRoute(builder: (_) => const PhoneSetPage()),
        )
            .then((val) => _listenForPermissionStatus());

      },
      child: Container(
        padding: EdgeInsets.symmetric(horizontal: 42.w, vertical: 20.w),
        decoration: BoxDecoration(
            color: const Color(0xFFF2F9FF),
            border: Border.all(color: const Color(0xFF1890FF), width: 2.w),
            borderRadius: BorderRadius.circular(16.w)),
        child: Row(
          children: [
            SizedBox(
              width: 48.w,
              height: 48.w,
              child: Image.asset(Assets.icons.set.path),
            ),
            16.wb,
            Text(
              "短信发送号码设置",
              style: TextStyle(fontSize: 28.sp, color: const Color(0xFF1890FF)),
            ),
            190.wb,
            SizedBox(
              width: 48.w,
              height: 48.w,
              child: const Icon(
                Icons.chevron_right,
                color: Color(0xFF1890FF),
              ),
            ),
          ],
        ),
      ),
    );
  }

  _getContainer(String title, String text, String image, Color cl1, Color cl2) {
    return GestureDetector(

        onTap: () async{
          // PackageInfo packageInfo = await PackageInfo.fromPlatform();
          // String version = packageInfo.version;//版本号
          // String buildNumber = packageInfo.buildNumber;//版本构建号
          // print(version);
          // print(buildNumber);
          // 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,
                  ),
                ),
              ],
            )));
  }
}