import 'dart:io';

// import 'package:audioplayers/audio_cache.dart';
import 'package:badges/badges.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:hyzp_ybqx/pages/Login/FaceReg.dart';
import 'package:hyzp_ybqx/pages/Login/ModifyPassword.dart';
import 'package:hyzp_ybqx/services/EventBus.dart';
import 'package:hyzp_ybqx/services/Storage.dart';

import '../../components/commonFun.dart';
import '../../widget/JdButton.dart';

class page7_setRemind extends StatefulWidget {
  page7_setRemind({Key key}) : super(key: key);

  _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<page7_setRemind> {
  dispose() {
    super.dispose();
  }

  @override
  void initState() {
    super.initState();
    bVoiceRemind = g_bVoiceRemind;

    getListView();

    // //监听 g_bVoiceRemind 更新事件
    // eventBus.on<VoiceRemindUpdate>().listen((event) async {
    //   print(event.str + ", g_bVoiceRemind = $g_bVoiceRemind");
    //   setState(() {
    //     getListView();
    //   });
    // });
  }

  ////////
  static onNullFun() {}

  Widget _getListTile(
    title, {
    String leadPath = '',
    Color leadColor,
    Color textColor,
    onTapFun = onNullFun,
    onLongPressFun = onNullFun,
    size = 16.0,
    bool bBadge = false,
    Widget trailWidget = const Icon(Icons.arrow_forward_ios),
  }) {
    // print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false
    return Column(
      children: <Widget>[
        ListTile(
          leading: bBadge
              ? Badge(
                  position: BadgePosition.topEnd(top: -7, end: -12),
                  badgeContent: null,
                  child: Image.asset(
                    leadPath,
                    height: ScreenUtil().setHeight(78),
                    fit: BoxFit.fitHeight,
                    // color: leadColor,  // 无效
                  ),
                )
              : Image.asset(
                  leadPath,
                  height: ScreenUtil().setHeight(78),
                  fit: BoxFit.fitHeight,
                ),
          title: Text(title, style: TextStyle(fontSize: size, color: textColor)),
          trailing: trailWidget,
          contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
          enabled: true,
          onTap: onTapFun,
          onLongPress: onLongPressFun,
        ),
        Divider(
          height: 1.0,
        ),
      ],
    );
  }

  List<Widget> _listViewUser = [];

  Color _greenColor = Color.fromRGBO(36, 206, 192, 1); //绿色
  Color _deepBlueColor = Color.fromRGBO(79, 118, 230, 1); //深蓝
  Color _deepGreyColor = Color.fromRGBO(116, 139, 161, 1); //深灰
  Color _ligthBlueColor = Color.fromRGBO(80, 159, 245, 1); //亮蓝

  OnTap_FaceReg() async {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => FaceReg()));
  }

  OnTap_modify_password() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => ModifyPassword()));
  }

  OnTap_Remind() {
    setState(() {
      bVoiceRemind = !bVoiceRemind;
      print("bVoiceRemind = $bVoiceRemind");
      // Storage.setBool('bVoiceRemind', bVoiceRemind);
      if (bVoiceRemind) {
        print("播放语音提醒");
        // AudioCache().play(File('audio/语音提醒.mp3').path); //语音提醒
        myPlayVoiceRemind();
      }
      getListView();
    });
  }

  bool bVoiceRemind;

  getListView() {
    _listViewUser.clear();
    _listViewUser = [
      Center(
        child: Container(
          margin: EdgeInsets.only(top: 30),
          height: ScreenUtil().setWidth(160),
          width: ScreenUtil().setWidth(160),
          //child: Image.asset('assets/images/user.png', fit: BoxFit.cover),
          child: Image.asset('assets/images/ybsthbj.png', fit: BoxFit.fitHeight),
        ),
      ),
      SizedBox(height: 50),
      _getListTile('待审提醒',
          leadPath: 'assets/images/语音提醒.png',
          leadColor: _deepGreyColor,
          textColor: bVoiceRemind ? Colors.blue : null,
          onTapFun: OnTap_Remind,
          trailWidget: bVoiceRemind
              ? Icon(Icons.check_box, color: Colors.blue)
              : Icon(Icons.check_box_outline_blank, color: Colors.blueAccent)),
      _getListTile('提醒间隔（秒）',
          leadPath: 'assets/images/时间间隔.png',
          leadColor: _deepBlueColor,
          trailWidget: getTextField()),
      SizedBox(height: 60),
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: [
          JdButton(
            height: 128,
            width: 282,
            //height: 126,
            text: "确认",
            color: Colors.blueAccent,
            onTop: () {
              g_bVoiceRemind = bVoiceRemind;
              print("g_bVoiceRemind = $g_bVoiceRemind");
              Storage.setBool('bVoiceRemind', g_bVoiceRemind);

              g_remindGap = _gap;
              print("g_remindGap = $g_remindGap");
              Storage.setInt('nRemindGap', g_remindGap);
              setRemindTimer(enable: g_bVoiceRemind);

              // AudioCache().play(File('audio/yinxiao1064.mp3').path); //音效提醒
              myPlayClacks(); //音效提醒
              Navigator.pop(context);
            },
          ),
          JdButton(
            height: 128,
            width: 282,
            //height: 126,
            text: "取消",
            color: Colors.blueAccent,
            onTop: () {
              Navigator.pop(context);
            },
          )
        ],
      ),
    ];
  }

  int _gap = g_remindGap;

  Widget getTextField() {
    return Container(
      width: ScreenUtil().setWidth(150),
      child: TextField(
        readOnly: !bVoiceRemind,
        focusNode: FocusNode(),
        textAlignVertical: TextAlignVertical(y: 1.0),
        controller: TextEditingController.fromValue(TextEditingValue(
            text: _gap.toString(),
            // 保持光标在最后
            selection: TextSelection.fromPosition(
                TextPosition(affinity: TextAffinity.downstream, offset: _gap.toString().length)))),
        maxLines: 1,
        keyboardType: TextInputType.number,
        decoration: InputDecoration(
          //contentPadding: EdgeInsets.only(bottom: 16),
          // hintText: widget.text,
          // border: OutlineInputBorder(
          //     borderRadius: BorderRadius.circular(30), borderSide: BorderSide.none),
          border: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
          focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
          enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
        ),
        onChanged: (v) {
          _gap = int.parse(v);
        },
      ),
    );
  }

  ////////

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: PreferredSize(
        preferredSize: Size.fromHeight(ScreenUtil().setHeight(173)), // 设置appBar高度
        // 设置appBar高度
        child: AppBar(
          automaticallyImplyLeading: false,
          centerTitle: true,
          titleSpacing: 0.0,
          //设置title的左边距
          flexibleSpace: Container(
            //SizedBox(height: ScreenUtil().statusBarHeight), //显示顶部状态栏
            // SizedBox(height: ScreenUtil().setHeight(10)), //显示顶部状态栏
            padding: EdgeInsets.only(top: ScreenUtil().statusBarHeight), //留出顶部状态栏高度
            child: Container(
              //height: ScreenUtil().setHeight(173),
              decoration: BoxDecoration(
                gradient: LinearGradient(
                  begin: Alignment.centerLeft,
                  end: Alignment.centerRight,
                  colors: [
                    Color.fromRGBO(12, 186, 156, 1),
                    Color.fromRGBO(39, 127, 235, 1),
                  ],
                ),
              ),
              // decoration: BoxDecoration(
              //   gradient: LinearGradient(colors: [
              //     Color(0xFF0018EB),
              //     Color(0xFF01C1D9),
              //   ], begin: Alignment.bottomCenter, end: Alignment.topCenter),
              // ),
            ),
          ),
          title: Padding(
            padding: EdgeInsets.only(left: 0, right: 0),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.start,
              children: [
                getIconAndTextButton(
                  iconColor: Colors.white,
                  iconData: Icons.chevron_left_outlined,
                  onPress: () {
                    Navigator.pop(context);
                  },
                ),
                Expanded(
                  child: Text("语音提醒设置",
                      style: TextStyle(color: Colors.white, fontSize: 20),
                      textAlign: TextAlign.center,
                      overflow: TextOverflow.ellipsis),
                ),
                SizedBox(width: 50),
              ],
            ),
          ),
        ),
      ),
      body: Container(
        padding: EdgeInsets.only(top: 30, bottom: 20, left: 20, right: 20),
        child: ListView(
          children: _listViewUser,
        ),
      ),
    );
  }
}
