import 'dart:io';

// import 'package:audioplayers/audio_cache.dart';
import 'package:badges/badges.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:hyzp_ybqx/components/commonFun.dart';
import 'package:hyzp_ybqx/components/hyxx_data_handle.dart';
import 'package:hyzp_ybqx/pages/Login/FaceLogin.dart';
import 'package:hyzp_ybqx/pages/Login/FaceReg.dart';
import 'package:hyzp_ybqx/pages/MyMsics/05_updated/MyUpdatedNew.dart';
import 'package:hyzp_ybqx/pages/Works/DWDT/dwInfo_data.dart';
import 'package:hyzp_ybqx/pages/Works/TJXX/tj_data.dart';
import 'package:hyzp_ybqx/pages/tabs/page5_userManager.dart';
import 'package:hyzp_ybqx/pages/tabs/page6_download.dart';
import 'package:hyzp_ybqx/pages/tabs/page7_setRemind.dart';
import 'package:hyzp_ybqx/services/EventBus.dart';
import 'package:hyzp_ybqx/widget/JdButton.dart';
import 'package:package_info/package_info.dart';
import 'package:path_provider/path_provider.dart';
import 'package:url_launcher/url_launcher.dart';

import '../../components/commonFun.dart';
import '../../components/customDialogF.dart';
import '../../services/Storage.dart';
//import 'package:hyzp_ybqx/widget/player_pro.dart';
import '../Login/ModifyPassword.dart';
import '../MyMsics/03_personal/PersonalData.dart';
import '../MyMsics/04_MyFeedback/MyFeedback.dart';
import '../MyMsics/07_myAbout/MyAbout.dart';

///flutter中如何获取子类Widget并调用它的方法    萤火虫离别的礼物    2019.08.07 15:46:08   https://www.jianshu.com/p/b16f70dd692c
//在flutter中开发中，会发现当子类Widget是StatefulWidget类型的时候，想要获取它的State并调用State中的方法，感觉无从下手。
// 不像是在iOS中，可以直接调用一个类的公开的方法，flutter可以通过key来实现。每个Widget都是唯一标识的。此唯一标识对应于可选的Key参数。
// 如果省略，Flutter将为您生成一个。key主要分为四种：GlobalKey，LocalKey，UniqueKey或ObjectKey，GlobalKey确保key是在整个应用程序唯一的，
// 这次我们就要使用它来实现。我们需要给子Widget定义一个唯一的GlobalKey，然后根据这个key获取到这个Widget，进行相关的操作，下面是相关的代码：
//这里就是关键的代码，定义一个key
//GlobalKey<MyFijkPanelWidgetBuilderState> _myFijkPanelWidgetBuilderStateKey = new GlobalKey<MyFijkPanelWidgetBuilderState>();

class Page4_MyMsicsNew extends StatefulWidget {
  Page4_MyMsicsNew({@required this.pageType, this.title, Key key}) : super(key: key);

  //该美工优化的页面 Page4_MyMsicsNew，是供多个页面共享的代码框架。不同的页面以 PageType 字段进行区分
  String pageType = ''; //'my_page'
  String title = '';

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

//class _Page1WorkState extends State<Page1Work> with WidgetsBindingObserver, AutomaticKeepAliveClientMixin {
class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
    with WidgetsBindingObserver, AutomaticKeepAliveClientMixin {
  //Begin：底部导航栏，使用PageView方式，配置每页面的保持状态。必须添加继承：with AutomaticKeepAliveClientMixin

  //try_setState();   //避免异常报错
  try_setState() {
    try {
      if (mounted) {
        setState(() {});
      }
    } catch (e) {
      print('setState(() {})异常：${e}');
    }
  }

  @override
  // TODO: implement wantKeepAlive
  bool get wantKeepAlive => true;

  //End：底部导航栏，使用PageView方式，配置每页面的保持状态

  // final FijkPlayer player = FijkPlayer();
  // bool bFirstPlay;

  @override
  void initState() {
    //监听 g_userInfo.userGroupIDlist 更新事件
    // eventBus.on<GroupIdUpdateEvent>().listen((event) async {
    //   print(event.str);
    //   getAdminItem();
    // });

    getListView();

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

    super.initState();
  }

  Future<void> sysPop() async {
    await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  }

  _Page4_MyMsicsNewState();

  @override
  void dispose() {
    super.dispose();
  }

  //自定义方法
  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,
            ),
          )
              : 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); //亮蓝

  getListView() {
    _listViewUser.clear();
    // _listViewUser.add(_getListTile('个人资料',
    //     leadPath: 'assets/images/我的.png',
    //     leadColor: _ligthBlueColor,
    //     onTapFun: OnTap_personal_data));
    // _listViewUser.add(_getListTile('意见反馈',
    //     leadPath: 'assets/images/意见反馈.png',
    //     leadColor: _ligthBlueColor,
    //     onTapFun: OnTap_MyFeedback));
    // _listViewUser.add(_getListTile('版本更新',
    //     leadPath: 'assets/images/版本更新.png', leadColor: _greenColor, onTapFun: OnTap_MyUpdate));
    // _listViewUser.add(_getListTile('清除缓存',
    //     leadPath: 'assets/images/清除缓存.png',
    //     leadColor: _deepBlueColor,
    //     onTapFun: OnTap_ClearCache));
    // _listViewUser.add(_getListTile('关于',
    //     leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout));

    _listViewUser = [
      _getListTile('清除缓存',
          leadPath: 'assets/images/清除缓存.png',
          leadColor: _deepBlueColor,
          onTapFun: OnTap_ClearCache),
      //用户资料修改、版本更新、意见反馈都需要后台支持才行，现在后台都没有提供支持，标书里面也没有要求，建议先去掉
      // _getListTile('个人资料',
      //     leadPath: 'assets/images/我的.png',
      //     leadColor: _ligthBlueColor,
      //     onTapFun: OnTap_personal_data),
      // _getListTile('意见反馈',
      //     leadPath: 'assets/images/意见反馈.png',
      //     leadColor: _ligthBlueColor,
      //     onTapFun: OnTap_MyFeedback),
      // _getListTile('修改密码',
      //     leadPath: 'assets/images/修改密码.png',
      //     leadColor: _deepBlueColor,
      //     onTapFun: OnTap_modify_password),
      _getListTile('账户管理',
          leadPath: 'assets/images/账户管理.png',
          leadColor: _deepBlueColor,
          onTapFun: OnTap_user_manager),
      //bNewVer：是否发现新版本
      _getListTile('提醒设置',
          leadPath: 'assets/images/语音提醒.png',
          leadColor: _deepGreyColor,
          onTapFun: OnTap_Remind),
      _getListTile('关于',
          leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout)

      // _getListTile('关于',
      //     leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout),
      // _getListTile('权限测试',
      //     leadPath: 'assets/images/权限.png',
      //     leadColor: _deepGreyColor,
      //     onTapFun: OnTap_UserAuthority),
    ];
    if (Platform.isAndroid) {
      _listViewUser.insertAll(
          2,
          [_getListTile('版本更新',
            leadPath: 'assets/images/版本更新.png',
            leadColor: _greenColor,
            onTapFun: OnTap_MyUpdate,
            bBadge: bNewVer),
          _getListTile('软件下载',
            leadPath: 'assets/images/download.png',
            leadColor: _deepBlueColor,
            onTapFun: OnTap_download)]);
    }
  }

  //已添加管理员记录的标志，0 未添加， 1 已添加 1 次
  //该标志也作为是否是管理员的标志，若为 0 便不是、只是当前还不是， 1 则是管理员
  //int alreadyFlag = 0;

  Future getAdminItem() async {
    _listViewUser.addAll(_listViewUser);
    for (int group_id in g_userInfo.userGroupIDlist) {
      print('group_id = $group_id');
      if (26 == group_id || 31 == group_id) {
        Widget _item = _getListTile('人脸注册',
            leadPath: 'assets/images/人脸注册.png',
            leadColor: _ligthBlueColor,
            onTapFun: OnTap_FaceReg);
        print('_listViewUser.length = ${_listViewUser.length}');
        _listViewUser.add(_item);
        break; //添加后便跳出循环，避免重复添加
      }
    }

    _listViewUser.add(_getListTile('关于',
        leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout));
    print('_listViewUser.length = ${_listViewUser.length}');
    Future.delayed(Duration(milliseconds: 500), () {
      try_setState();
    });
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      child: Container(
        decoration: new BoxDecoration(
          color: Color.fromRGBO(244, 244, 244, 1), //设置背景色
        ),
        child: Column(
          children: <Widget>[
            Container(
              height: ScreenUtil().setHeight(484), //530 - 46
              child: Stack(
                children: [
                  //1、第1行文字
                  Positioned(
                    child: Container(
                      height: ScreenUtil().setHeight(324), //181
                      alignment: Alignment.topCenter,
                      decoration: BoxDecoration(
                        gradient: LinearGradient(
                          begin: Alignment.centerLeft,
                          end: Alignment.centerRight,
                          colors: [
                            Color.fromRGBO(12, 186, 156, 1),
                            Color.fromRGBO(39, 127, 235, 1),
                          ],
                        ),
                      ),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        //crossAxisAlignment: CrossAxisAlignment.start, //用的比较少
                        children: <Widget>[
                          FlatButton(
                            child: Container(
                              child: Row(
                                children: [
                                  Padding(
                                    padding: EdgeInsets.only(top: ScreenUtil().setHeight(10)),
                                    child: 0 == service_tel.length
                                        ? Text("")
                                        : Image.asset(
                                            'assets/images/形状 2.png',
                                            height: ScreenUtil().setHeight(45),
                                          ),
                                  ),
                                  Text(0 == service_tel.length ? "                     " : " 客服热线",
                                      style: TextStyle(fontSize: 16, color: Colors.white)),
                                ],
                              ),
                            ),
                            onPressed: 0 == service_tel.length
                                ? onNullFun
                                : () => launch("tel://18784678300"),
                          ),
                          SizedBox(
                            width: ScreenUtil().setWidth(45),
                          ),
                          Expanded(
                            child: Text(widget.title,
                                style: TextStyle(fontSize: 20.0, color: Colors.white)),
                          ),
                        ],
                      ),
                    ),
                  ),
                  //2、第2行装饰
                  Align(
                    alignment: Alignment.bottomLeft,
                    child: Container(
                      alignment: Alignment(0, 1),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        //crossAxisAlignment: CrossAxisAlignment.end,
                        children: [
                          Container(
                            padding: EdgeInsets.only(bottom: ScreenUtil().setHeight(18)),
                            height: ScreenUtil().setHeight(310),
                            decoration: BoxDecoration(
                              color: Color.fromRGBO(62, 88, 231, 1),
                              borderRadius: BorderRadius.horizontal(right: Radius.circular(20)),
                            ),
                            //color: Colors.pinkAccent,
                            width: ScreenUtil().setWidth(34),
                            alignment: Alignment.centerRight,
                          ),
                          getImageWidget(),
                          // Container(
                          //   alignment: Alignment(0, 0),
                          //   height: ScreenUtil().setHeight(346),
                          //   width: ScreenUtil().setWidth(942),
                          //   child: Image.asset(
                          //     'assets/images/装饰图片10.png',
                          //     fit: BoxFit.cover,
                          //   ),
                          // ),
                          Container(
                            height: ScreenUtil().setHeight(310),
                            decoration: BoxDecoration(
                              color: Color.fromRGBO(113, 39, 203, 1),
                              borderRadius: BorderRadius.horizontal(left: Radius.circular(20)),
                            ),
                            //color: Colors.pinkAccent,
                            width: ScreenUtil().setWidth(34),
                            alignment: Alignment.centerRight,
                          ),
                        ],
                      ),
                    ),
                  ),
                ],
              ),
            ),
            //3、第3行统计信息
            SizedBox(height: ScreenUtil().setHeight(46)),
            Expanded(
              //Flutter Column套ListView不显示，可将ListView用Expanded包裹起来。
              //用 ListView.builder 不好区别处理响应函数的动态参数传递，所以使用基本 ListView
              // child: ListView.builder(
              //     itemCount: listContacts.length,
              //     itemBuilder: this._getlistContacts),
              child: ListView(
                padding: EdgeInsets.all(10),
                children: _listViewUser,
              ),
            ),
            Divider(
              height: 20.0,
              indent: 0.0,
              thickness: 1.0,
              color: Color.fromRGBO(80, 159, 245, 1),
            ),
            // Center(
            //   child: RaisedButton(
            //     //padding: EdgeInsets.all(0),
            //     onPressed: () {
            //       Navigator.pushNamed(context, '/', arguments: 0);
            //     },
            //     //color: Colors.transparent,
            //     child: Text('退出登录'),
            //   ),
            // ),
            JdButton(
              height: 126,
              //JdText中已经使用ScreenUtil().setHeight(126)，此处不能传 ScreenUtil().setHeight(126) ，否则严重错位
              width: 350,
              text: "退出登录",
              color: Color.fromRGBO(80, 159, 245, 1),
              onTop: () {
                clear_user_info(); // 清空用户信息

                //清空点位地图定位标记
                g_listBMFMarker = [];
                g_map_BMFMarkerID_dwIndex = {};
                g_listBMFText = [];
                g_zoomLevel = g_zoomLevel_default = 14; //地图默认缩放倍数

                //刷新统计数据
                // listAllStatisData.clear(); // 没有什么作用
                listDwinfoGetList2.clear();
                mapStatisInfo.forEach((key, value) {
                  mapStatisInfo[key] = -1;
                });
                // eventBus.fire(WatermarkUpdate('试用版水印改变事件'));
                Navigator.pushNamed(context, '/', arguments: 0);
              },
            ),
            SizedBox(
              height: 20.0, //防止误触，所以设大一些
            ),
          ],
        ),
      ),
      onWillPop: () {
        sysPop();
      },
    );
  }

  OnTap_Remind() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => page7_setRemind()));
  }

  OnTap_MyAbout() {
    PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
      String appName = packageInfo.appName;
      String packageName = packageInfo.packageName;
      String version = packageInfo.version;
      String buildNumber = packageInfo.buildNumber;
      String buildDate =
          '${buildNumber.substring(0, 4)}.${buildNumber.substring(4, 6)}.${buildNumber.substring(6, 8)}';
      Navigator.of(context)
          .push(MaterialPageRoute(builder: (context) => MyAbout(ver: version, date: buildDate)));
    });
  }

  OnTap_MyUpdate() {
    PackageInfo.fromPlatform().then((PackageInfo packageInfo) async {
      String appName = packageInfo.appName;
      String packageName = packageInfo.packageName;
      String version = packageInfo.version;
      String buildNumber = packageInfo.buildNumber;
      String buildDate =
          '${buildNumber.substring(0, 4)}.${buildNumber.substring(4, 6)}.${buildNumber.substring(6, 8)}';

      print('appName = $appName');
      print('packageName = $packageName');
      print('version = $version');
      print('buildNumber = $buildNumber');
      print('buildDate = $buildDate');
      // I/flutter (30820): appName = 宜宾市翠屏黑烟抓拍
      // I/flutter (30820): packageName = com.flutter.hyzp_ybqx
      // I/flutter (30820): version = 1.3.1
      // I/flutter (30820): buildNumber = 20210508
      // I/flutter (30820): buildDate = 2021.05.08

      //Fluttertoast.showToast(msg: '当前版本 v$version。暂无更新', gravity: ToastGravity.CENTER);
      // Navigator.of(context).push(MaterialPageRoute(
      //     builder: (context) => MyUpdated(ver: version, date: buildDate, theContext: context)));

      MyUpdatedNew m = await MyUpdatedNew(
          ver: version,
          date: buildDate,
          theContext: context,
          bStartUpdated: true,
          bShowNoNewVersion: true);
    });
  }

  Future _getTotalSizeOfFilesInDir(final FileSystemEntity file) async {
    if (file is File) {
      int length = await file.length();
      return double.parse(length.toString());
    }
    if (file is Directory) {
      final List children = file.listSync();
      double total = 0;
      if (children != null)
        for (final FileSystemEntity child in children)
          total += await _getTotalSizeOfFilesInDir(child);
      return total;
    }
    return 0;
  }

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

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

  OnTap_user_manager() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => page5_userManager()));
  }

  OnTap_download() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => page6_download()));
  }

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

  OnTap_personal_data() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => PersonalData()));
  }

  OnTap_MyFeedback() {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => MyFeedback()));
  }

  OnTap_UserAuthority() async {
    //1、根据用户ID获取用户所属角色（用户组）
    //getUserAccess(user_id: 136);

    //2.2、获取后台用户全部角色分组数据
    //I/flutter (15540): g_userInfo.userGroupIDlist = [32, 33]
    // g_userInfo.userRulesMap.clear();
    // //getUserGroup(group_id: 27);
    // getUserGroupAll(user_id: 136);
    //
    // Future.delayed(const Duration(milliseconds: 3500), () {
    //   print('g_userInfo.userRulesMap = ${g_userInfo.userRulesMap.toString()}');
    // });
    //I/flutter (15540): g_userInfo.userRulesMap = {32: [1968, 1972, 1973, 1969, 1976, 1977, 2008, 2009, 2011, 2014, 2015, 2018, 2029, 2030, 2031, 2054, 2055, 2035, 2036, 2037, 204
    // 1, 2042, 2043, 2047, 2048, 2049, 2053, 1970, 1980, 1981, 1971, 1984, 1985, 1992, 1993, 2000, 2001, 2020, 2022], 33: [1968, 1972, 1973, 1969, 1976, 1977, 2008, 2009, 2011, 201
    // 4, 2015, 2018, 2029, 2030, 2031, 2054, 2055, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2048, 2049, 2053, 1970, 1980, 1981, 1971, 1984, 1985, 1992, 1993, 2000, 2001, 2019, 202
    // 0, 2022]}

    // getUserGroup(group_id: g_userInfo.userGroupIDlist[0]);
    // print('g_userInfo.userRulesMap = ${g_userInfo.userRulesMap.toString()}');
    //I/flutter (15540): g_userInfo.userRulesMap = {32: [1968, 1972, 1973, 1969, 1976, 1977, 2008, 2009, 2011,
    // 2014, 2015, 2018, 2029, 2030, 2031, 2054, 2055, 2035, 2036, 2037, 2041, 2042, 2043, 2047,
    // 2048, 2049, 2053, 1970, 1980, 1981, 1971, 1984, 1985, 1992, 1993, 2000, 2001, 2020, 2022]}

    // g_userInfo.userRulesMap.clear();
    // getUserGroupAll();
    // print('g_userInfo.userGroupIDlist = ${g_userInfo.userGroupIDlist}');
    // print('g_userInfo.userGroupIDlist[0] = ${g_userInfo.userGroupIDlist[0]}');
    // getUserGroup(group_id: g_userInfo.userGroupIDlist[0]);
    //I/flutter (15540): g_userInfo.userGroupIDlist = [31, 27]
    //getUserGroup(group_id: g_userInfo.userGroupIDlist[1]);

    ///3、获取后台全部 (All) 用户角色分组分页列表数据
    // getRecordList(api: ServicePath.getUserGroupListUrl).then((map) {
    //   mapUserGroupList = map;
    // });
    //I/flutter ( 1422): http://125.64.218.67:9904/?s=App.User_User.GetGroupList
    // I/flutter ( 1422): 开始处理登录请求...
    // I/flutter ( 1422): response = {"ret":200,"data":{"items":[{"id":35,"jgid":2,"type":0,"title":"局领导","level":0,"pid":0,"sort":1,"status":1,"rules":""},{"id":34,"jgid":2,"typ
    // e":0,"title":"系统管理","level":0,"pid":0,"sort":1,"status":1,"rules":""},{"id":33,"jgid":2,"type":1,"title":"参观者","level":0,"pid":0,"sort":4,"status":1,"rules":"1968,1972
    // ,1973,1969,1976,1977,2008,2009,2011,2014,2015,2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,200
    // 1,2019,2020,2022"},{"id":32,"jgid":2,"type":0,"title":"演示账户","level":0,"pid":0,"sort":3,"status":1,"rules":"1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,2015,2018,20
    // 29,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2020,2022"},{"id":31,"jgid":2,"type":0,"title":"监
    // 控室","level":0,"pid":0,"sort":2,"status":1,"rules":""},{"id":30,"jgid":2,"type":0,"title":"中心领导","level":0,"pid":0,"sort":1,"status":1,"rules":"196
    // I/flutter ( 1422): mapRecordList['mapRecordListRet'] = {ret: 200, data: {items: [{id: 35, jgid: 2, type: 0, title: 局领导, level: 0, pid: 0, sort: 1, status: 1, rules: }, {id
    // : 34, jgid: 2, type: 0, title: 系统管理, level: 0, pid: 0, sort: 1, status: 1, rules: }, {id: 33, jgid: 2, type: 1, title: 参观者, level: 0, pid: 0, sort: 4, status: 1, rules
    // : 1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,2015,2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,19
    // 93,2000,2001,2019,2020,2022}, {id: 32, jgid: 2, type: 0, title: 演示账户, level: 0, pid: 0, sort: 3, status: 1, rules: 1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,2015,
    // 2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2020,2022}, {id: 31, jgid: 2, type: 0, title
    // : 监控室, level: 0, pid: 0, sort: 2, status: 1, rules: }, {id: 30, jgid: 2, type: 0, title: 中心领导, level: 0, pid: 0, sort: 1, status: 1, rules: 1968
    // I/flutter ( 1422): mapRecordList['listRecordList'] = []
    // I/flutter ( 1422): _list1 = [{id: 35, jgid: 2, type: 0, title: 局领导, level: 0, pid: 0, sort: 1, status: 1, rules: }, {id: 34, jgid: 2, type: 0, title: 系统管理, level: 0, p
    // id: 0, sort: 1, status: 1, rules: }, {id: 33, jgid: 2, type: 1, title: 参观者, level: 0, pid: 0, sort: 4, status: 1, rules: 1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,
    // 2015,2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2019,2020,2022}, {id: 32, jgid: 2, type
    // : 0, title: 演示账户, level: 0, pid: 0, sort: 3, status: 1, rules: 1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,2015,2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,20
    // 42,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2020,2022}, {id: 31, jgid: 2, type: 0, title: 监控室, level: 0, pid: 0, sort: 2, status: 1, rule
    // s: }, {id: 30, jgid: 2, type: 0, title: 中心领导, level: 0, pid: 0, sort: 1, status: 1, rules: 1968,1972,1973,1974,1975,1969,1976,1977,1978,1979,1970,1
    // I/flutter ( 1422): mapRecordList['listRecordList'] = [{id: 35, jgid: 2, type: 0, title: 局领导, level: 0, pid: 0, sort: 1, status: 1, rules: }, {id: 34, jgid: 2, type: 0, tit
    // le: 系统管理, level: 0, pid: 0, sort: 1, status: 1, rules: }, {id: 33, jgid: 2, type: 1, title: 参观者, level: 0, pid: 0, sort: 4, status: 1, rules: 1968,1972,1973,1969,1976,
    // 1977,2008,2009,2011,2014,2015,2018,2029,2030,2031,2054,2055,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2019,2020,2022
    // }, {id: 32, jgid: 2, type: 0, title: 演示账户, level: 0, pid: 0, sort: 3, status: 1, rules: 1968,1972,1973,1969,1976,1977,2008,2009,2011,2014,2015,2018,2029,2030,2031,2054,20
    // 55,2035,2036,2037,2041,2042,2043,2047,2048,2049,2053,1970,1980,1981,1971,1984,1985,1992,1993,2000,2001,2020,2022}, {id: 31, jgid: 2, type: 0, title: 监控室, level: 0, pid: 0,
    //  sort: 2, status: 1, rules: }, {id: 30, jgid: 2, type: 0, title: 中心领导, level: 0, pid: 0, sort: 1, status: 1, rules: 1968,1972,1973,1974,1975,1969,1
    // I/flutter ( 1422): map['page'] = 1
    // I/flutter ( 1422): _counter = 8
    // I/flutter ( 1422): _total = 8

    ///5、获取后台功能分类分页列表数据
    // getRecordList(api: ServicePath.getUserAuthListUrl).then((map) {
    //   mapUserAuthList = map;
    // });
    //I/flutter ( 3512): http://125.64.218.67:9904/?s=App.User_User.GetAuthList
    // I/flutter ( 3512): 开始处理登录请求...
    // I/flutter ( 3512): response = {"ret":200,"data":{"items":[{"id":2069,"jgid":2,"level":2,"pid":2067,"name":"blacksmoke2/b2tj/fenxicll/fenxi","title":"分析","type":1,"status":1
    // ,"condition":"","sort":9},{"id":2068,"jgid":2,"level":2,"pid":2067,"name":"blacksmoke2/b2tj/fenxicll/view","title":"查看","type":1,"status":1,"condition":"","sort":0},{"id":2
    // 067,"jgid":2,"level":1,"pid":2029,"name":"blacksmoke2/b2tj/fenxicll","title":"车流量统计","type":1,"status":1,"condition":"","sort":7},{"id":2066,"jgid":2,"level":2,"pid":206
    // 4,"name":"blacksmoke2/b2tj/dwinfoview/fenxi","title":"分析","type":1,"status":1,"condition":"","sort":9},{"id":2065,"jgid":2,"level":2,"pid":2064,"name":"blacksmoke2/b2tj/dwi
    // nfoview/view","title":"查看","type":1,"status":1,"condition":"","sort":0},{"id":2064,"jgid":2,"level":1,"pid":2029,"name":"blacksmoke2/b2tj/dwinfoview","title":"监测点位状态
    // 详情","type":1,"status":1,"condition":"","sort":6},{"id":2063,"jgid":2,"level":2,"pid":2061,"name":"blacksmoke2/b2tj/dwinfo/fenxi","title":"分析","typ
    // I/flutter ( 3512): mapRecordList['mapRecordListRet'] = {ret: 200, data: {items: [{id: 2069, jgid: 2, level: 2, pid: 2067, name: blacksmoke2/b2tj/fenxicll/fenxi, title: 分析,
    // type: 1, status: 1, condition: , sort: 9}, {id: 2068, jgid: 2, level: 2, pid: 2067, name: blacksmoke2/b2tj/fenxicll/view, title: 查看, type: 1, status: 1, condition: , sort:
    // 0}, {id: 2067, jgid: 2, level: 1, pid: 2029, name: blacksmoke2/b2tj/fenxicll, title: 车流量统计, type: 1, status: 1, condition: , sort: 7}, {id: 2066, jgid: 2, level: 2, pid:
    //  2064, name: blacksmoke2/b2tj/dwinfoview/fenxi, title: 分析, type: 1, status: 1, condition: , sort: 9}, {id: 2065, jgid: 2, level: 2, pid: 2064, name: blacksmoke2/b2tj/dwinfo
    // view/view, title: 查看, type: 1, status: 1, condition: , sort: 0}, {id: 2064, jgid: 2, level: 1, pid: 2029, name: blacksmoke2/b2tj/dwinfoview, title: 监测点位状态详情, type:
    // 1, status: 1, condition: , sort: 6}, {id: 2063, jgid: 2, level: 2, pid: 2061, name: blacksmoke2/b2tj/dwinfo/fenxi, title: 分析, type: 1, status: 1, c
    // I/flutter ( 3512): map['page'] = 1
    // I/flutter ( 3512): _counter = 20
    // I/flutter ( 3512): _total = 78
    // I/flutter ( 3512): 第 1 次网络请求过程正常完成
    // I/flutter ( 3512): response = {"ret":200,"data":{"items":[{"id":2042,"jgid":2,"level":1,"pid":2029,"name":"blacksmoke2/b2tj/fenxicartime","title":"车辆轨迹查询","type":1,"sta
    // tus":1,"condition":"","sort":3},{"id":2041,"jgid":2,"level":2,"pid":2036,"name":"blacksmoke2/b2tj/fenxicar/fenxi","title":"分析","type":1,"status":1,"condition":"","sort":9},
    // {"id":2037,"jgid":2,"level":2,"pid":2036,"name":"blacksmoke2/b2tj/fenxicar/view","title":"查看","type":1,"status":1,"condition":"","sort":0},{"id":2036,"jgid":2,"level":1,"pi
    // d":2029,"name":"blacksmoke2/b2tj/fenxicar","title":"车辆点位频率分析","type":1,"status":1,"condition":"","sort":2},{"id":2035,"jgid":2,"level":2,"pid":2030,"name":"blacksmoke
    // 2/b2tj/fenxi","title":"分析","type":1,"status":1,"condition":"","sort":9},{"id":2034,"jgid":2,"level":2,"pid":2030,"name":"blacksmoke2/b2tj/outxls","title":"导出","type":1,"s
    // tatus":1,"condition":"","sort":7},{"id":2031,"jgid":2,"level":2,"pid":2030,"name":"blacksmoke2/b2tj/view","title":"查看","type":1,"status":1,"condit
    // I/flutter ( 3512): mapRecordList['mapRecordListRet'] = {ret: 200, data: {items: [{id: 2042, jgid: 2, level: 1, pid: 2029, name: blacksmoke2/b2tj/fenxicartime, title: 车辆轨迹
    // 查询, type: 1, status: 1, condition: , sort: 3}, {id: 2041, jgid: 2, level: 2, pid: 2036, name: blacksmoke2/b2tj/fenxicar/fenxi, title: 分析, type: 1, status: 1, condition: ,
    //  sort: 9}, {id: 2037, jgid: 2, level: 2, pid: 2036, name: blacksmoke2/b2tj/fenxicar/view, title: 查看, type: 1, status: 1, condition: , sort: 0}, {id: 2036, jgid: 2, level: 1
    // , pid: 2029, name: blacksmoke2/b2tj/fenxicar, title: 车辆点位频率分析, type: 1, status: 1, condition: , sort: 2}, {id: 2035, jgid: 2, level: 2, pid: 2030, name: blacksmoke2/b
    // 2tj/fenxi, title: 分析, type: 1, status: 1, condition: , sort: 9}, {id: 2034, jgid: 2, level: 2, pid: 2030, name: blacksmoke2/b2tj/outxls, title: 导出, type: 1, status: 1, co
    // ndition: , sort: 7}, {id: 2031, jgid: 2, level: 2, pid: 2030, name: blacksmoke2/b2tj/view, title: 查看, type: 1, status: 1, condition: , sort: 0}, {
    // I/flutter ( 3512): map['page'] = 2
    // I/flutter ( 3512): _counter = 40
    // I/flutter ( 3512): _total = 78
    // I/flutter ( 3512): 第 2 次网络请求过程正常完成
    // I/flutter ( 3512): response = {"ret":200,"data":{"items":[{"id":2008,"jgid":2,"level":1,"pid":1969,"name":"blacksmoke2/b2yjfsls/index","title":"历史数据","type":1,"status":1,
    // "condition":"","sort":2},{"id":2007,"jgid":2,"level":2,"pid":2000,"name":"blacksmoke2/b2dwinfo/inxls","title":"导入","type":1,"status":1,"condition":"","sort":8},{"id":2006,"
    // jgid":2,"level":2,"pid":2000,"name":"blacksmoke2/b2dwinfo/outxls","title":"导出","type":1,"status":1,"condition":"","sort":7},{"id":2005,"jgid":2,"level":2,"pid":2000,"name":
    // "blacksmoke2/b2dwinfo/del","title":"删除","type":1,"status":1,"condition":"","sort":4},{"id":2004,"jgid":2,"level":2,"pid":2000,"name":"blacksmoke2/b2dwinfo/lock","title":"锁
    // 定","type":1,"status":1,"condition":"","sort":3},{"id":2003,"jgid":2,"level":2,"pid":2000,"name":"blacksmoke2/b2dwinfo/edit","title":"编辑","type":1,"status":1,"condition":""
    // ,"sort":2},{"id":2002,"jgid":2,"level":2,"pid":2000,"name":"blacksmoke2/b2dwinfo/add","title":"新增","type":1,"status":1,"condition":"","sort":1},{"id":2001
    // I/flutter ( 3512): mapRecordList['mapRecordListRet'] = {ret: 200, data: {items: [{id: 2008, jgid: 2, level: 1, pid: 1969, name: blacksmoke2/b2yjfsls/index, title: 历史数据, t
    // ype: 1, status: 1, condition: , sort: 2}, {id: 2007, jgid: 2, level: 2, pid: 2000, name: blacksmoke2/b2dwinfo/inxls, title: 导入, type: 1, status: 1, condition: , sort: 8}, {
    // id: 2006, jgid: 2, level: 2, pid: 2000, name: blacksmoke2/b2dwinfo/outxls, title: 导出, type: 1, status: 1, condition: , sort: 7}, {id: 2005, jgid: 2, level: 2, pid: 2000, na
    // me: blacksmoke2/b2dwinfo/del, title: 删除, type: 1, status: 1, condition: , sort: 4}, {id: 2004, jgid: 2, level: 2, pid: 2000, name: blacksmoke2/b2dwinfo/lock, title: 锁定, t
    // ype: 1, status: 1, condition: , sort: 3}, {id: 2003, jgid: 2, level: 2, pid: 2000, name: blacksmoke2/b2dwinfo/edit, title: 编辑, type: 1, status: 1, condition: , sort: 2}, {i
    // d: 2002, jgid: 2, level: 2, pid: 2000, name: blacksmoke2/b2dwinfo/add, title: 新增, type: 1, status: 1, condition: , sort: 1}, {id: 2001, jgid: 2, level: 2,
    // I/flutter ( 3512): map['page'] = 3
    // I/flutter ( 3512): _counter = 60
    // I/flutter ( 3512): _total = 78
    // I/flutter ( 3512): 第 3 次网络请求过程正常完成
    // I/flutter ( 3512): response = {"ret":200,"data":{"items":[{"id":1988,"jgid":2,"level":2,"pid":1984,"name":"blacksmoke2/b2ledxs/lock","title":"锁定","type":1,"status":1,"condi
    // tion":"","sort":3},{"id":1987,"jgid":2,"level":2,"pid":1984,"name":"blacksmoke2/b2ledxs/edit","title":"编辑","type":1,"status":1,"condition":"","sort":2},{"id":1986,"jgid":2,
    // "level":2,"pid":1984,"name":"blacksmoke2/b2ledxs/add","title":"新增","type":1,"status":1,"condition":"","sort":1},{"id":1985,"jgid":2,"level":2,"pid":1984,"name":"blacksmoke2
    // /b2ledxs/view","title":"查看","type":1,"status":1,"condition":"","sort":0},{"id":1984,"jgid":2,"level":1,"pid":1971,"name":"blacksmoke2/b2ledxs/index","title":"LED显示设置","
    // type":1,"status":1,"condition":"","sort":1},{"id":1983,"jgid":2,"level":2,"pid":1980,"name":"blacksmoke2/b2ts/shenhe","title":"审核","type":1,"status":1,"condition":"","sort"
    // :5},{"id":1981,"jgid":2,"level":2,"pid":1980,"name":"blacksmoke2/b2ts/view","title":"查看","type":1,"status":1,"condition":"","sort":0},{"id":1980,"jgid":2,
    // I/flutter ( 3512): mapRecordList['mapRecordListRet'] = {ret: 200, data: {items: [{id: 1988, jgid: 2, level: 2, pid: 1984, name: blacksmoke2/b2ledxs/lock, title: 锁定, type: 1
    // , status: 1, condition: , sort: 3}, {id: 1987, jgid: 2, level: 2, pid: 1984, name: blacksmoke2/b2ledxs/edit, title: 编辑, type: 1, status: 1, condition: , sort: 2}, {id: 1986
    // , jgid: 2, level: 2, pid: 1984, name: blacksmoke2/b2ledxs/add, title: 新增, type: 1, status: 1, condition: , sort: 1}, {id: 1985, jgid: 2, level: 2, pid: 1984, name: blacksmo
    // ke2/b2ledxs/view, title: 查看, type: 1, status: 1, condition: , sort: 0}, {id: 1984, jgid: 2, level: 1, pid: 1971, name: blacksmoke2/b2ledxs/index, title: LED显示设置, type:
    // 1, status: 1, condition: , sort: 1}, {id: 1983, jgid: 2, level: 2, pid: 1980, name: blacksmoke2/b2ts/shenhe, title: 审核, type: 1, status: 1, condition: , sort: 5}, {id: 1981
    // , jgid: 2, level: 2, pid: 1980, name: blacksmoke2/b2ts/view, title: 查看, type: 1, status: 1, condition: , sort: 0}, {id: 1980, jgid: 2, level: 1, pid: 1970
    // I/flutter ( 3512): map['page'] = 4
    // I/flutter ( 3512): _counter = 78
    // I/flutter ( 3512): _total = 78

    ///6、获取后台功能分类分页列表数据，然后获取用户功能权限索引map，便于直观理解和处理
    // getRecordList(api: ServicePath.getUserAuthListUrl).then((map) {
    //   mapUserAuthList = map;
    //   getUserAuth();
    // });

    ///7、获取后台功能分类分页列表数据，然后获取用户功能路径索引map，便于直观理解和处理
    // getRecordList(api: ServicePath.getUserAuthListUrl).then((map) {
    //   mapUserAuthList = map;
    //   getUserAuthMap(value: 'name');
    // });

    ///8、测试新的视频地址 rtsp://125.64.218.67:9901/rtp/gb_play_34020000001320013016_34020000001320013016
    // urlnew = 'rtsp://125.64.218.67:9901/rtp/gb_play_34020000001320013016_34020000001320013016';
    // Navigator.of(context).push(MaterialPageRoute(
    //     builder: (context) => PlayerPro(
    //       url: urlnew,
    //       title: '点位视频测试',
    //     )));

    ///9、测试新的视频地址 rtmp://125.64.218.67:9901/rtp/gb_play_34020000001320013016_34020000001320013016
    // urlnew = 'rtmp://125.64.218.67:9901/rtp/gb_play_34020000001320013016_34020000001320013016';
    // Navigator.of(context).push(MaterialPageRoute(
    //     builder: (context) => PlayerPro(
    //       url: urlnew,
    //       title: '点位视频测试',
    //     )));

    // getRecordList(api: ServicePath.getUserAuthListUrl).then((map) {
    //   mapUserAuthList = map;
    //   // var _jsonStr = json.encode(getUserAuthMap(value: 'name'));
    //   // List _list = json.decode(_jsonStr);
    //
    //   Map<String, dynamic> map1 = {"name": "AllenSu", "area": "郑州", "sex": "男", "age": 18};
    //   String _jsonStr = json.encode(map1);
    //   //print('_jsonStr = $_jsonStr');
    //   //List _list = json.decode(_jsonStr);
    //   // Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>'
    //   Map map2 = json.decode(_jsonStr);
    //   //print('_list = ${_list}');
    //
    //   String str = json_print(map2, 1);
    //   List list = ['test', 'dsaf', 'swer'];
    //   //segmentPrint(str);
    //   //print('_jsonStr = ${json_print(map2, 1)}');
    //
    //   print('str = ${str}');
    //   my_segmentPrint(str);
    //
    // });
  }

  Future<Null> loadCache() async {
    Directory tempDir = await getTemporaryDirectory();
    double value = await _getTotalSizeOfFilesInDir(tempDir);
    print('临时目录大小: ' + value.toString());
    //清除缓存
    delDir(tempDir);
  }

  //递归方式删除目录
  Future<Null> delDir(FileSystemEntity file) async {
    if (file is Directory) {
      final List<FileSystemEntity> children = file.listSync();
      for (final FileSystemEntity child in children) {
        await delDir(child);
      }
    }
    await file.delete();
  }

  OnTap_ClearCache() async {
    Directory tempDir = await getTemporaryDirectory();
    print('tempDir: ' + tempDir.path);
    double SizeOfFiles = await _getTotalSizeOfFilesInDir(tempDir) / 1000000;
    print('临时目录大小: ${SizeOfFiles.toString()} MB');

    bool ret = await showDialog(
        context: context,
        builder: (context) {
          myController.text = '';
          return CustomDialogF(
            title: "选择操作",
            content: '缓存大小：${SizeOfFiles.toString()} MB，是否清除',
          );
        });

    print('ret: $ret');
    if (ret) {
      print('清除缓存...');
      //清除内存
      PaintingBinding.instance.imageCache.clear();
      //清除缓存
      delDir(tempDir);
      //清空SharedPreferences
      Storage.clear();
    }
  }
}
