import 'dart:async';

import 'package:flustars/flustars.dart';
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/utils/headers.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;
    setState(() {});
  }
  @override
  void didChangeAppLifecycleState(AppLifecycleState state){
    super.didChangeAppLifecycleState(state);
    switch (state){
    //应用状态处于闲置状态,并且没有用户的输入事件,
    // 注意:这个状态切换到 前后台 会触发,所以流程应该是先冻结窗口,然后停止UI
      case AppLifecycleState.inactive:
        print("应用处于闲置状态,这种状态的应用应该假设他们可能在任何时候暂停 切换到后台会触发======");
        break;
      case AppLifecycleState.resumed:
        print("应用进入前台——————————");
        _listenForPermissionStatus();
        break;
      case AppLifecycleState.paused:
        print("应用处于不可见状态 后台======");
        break;
      case AppLifecycleState.detached:
        print("当前页面即将退出======");
        break;
    }
  }
  @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) ,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()
          ,Image.asset(
            image,
            width: 166.w,
            height: 152.w,
            fit: BoxFit.fill,
          ),],)));
  }
}