// // ignore_for_file: prefer_typing_uninitialized_variables, library_private_types_in_public_api, use_build_context_synchronously
//
// import 'dart:convert';
// import 'dart:io';
//
// import 'package:flutter/material.dart';
// import 'package:flutter_easyrefresh/easy_refresh.dart';
// import 'package:get/get.dart';
// import 'package:intl/intl.dart';
// import 'package:package_info/package_info.dart';
// import 'package:special_equipment_flutter/common/route_string.dart';
// import 'package:special_equipment_flutter/dio/http_utils.dart';
// import 'package:special_equipment_flutter/model/check_update.dart';
// import 'package:special_equipment_flutter/model/count_bo.dart';
// import 'package:special_equipment_flutter/model/echart_bo.dart';
// import 'package:special_equipment_flutter/model/find_charge_list_bo.dart';
// import 'package:special_equipment_flutter/model/office_device.dart';
// import 'package:special_equipment_flutter/model/role_bo.dart';
// import 'package:special_equipment_flutter/model/version/app_info_bo.dart';
// import 'package:special_equipment_flutter/model/version/version_bo.dart';
// import 'package:special_equipment_flutter/ui/common/data.dart';
// import 'package:special_equipment_flutter/ui/main/echart/home_echart_tabs.dart';
// import 'package:special_equipment_flutter/ui/main/unit/equipment_personnel_table.dart';
// import 'package:special_equipment_flutter/ui/main/unit/unit_grid_list.dart';
// import 'package:special_equipment_flutter/utils/size_config.dart';
// import 'package:special_equipment_flutter/utils/storage_util.dart';
// import 'package:special_equipment_flutter/utils/toast_utils.dart';
// import 'package:special_equipment_flutter/widgets/custom_button.dart';
// import 'package:special_equipment_flutter/widgets/divider_custom.dart';
// import 'package:special_equipment_flutter/widgets/easy_refresh_header1.dart';
// import 'package:url_launcher/url_launcher.dart';
//
// import '../../common/color_const.dart';
// import '../../utils/string_utils.dart';
//
// ///首页
// class HomePage extends StatefulWidget {
//   const HomePage({super.key});
//
//   @override
//   _HomePageState createState() => _HomePageState();
// }
//
// class _HomePageState extends State<HomePage>
//     with AutomaticKeepAliveClientMixin, TickerProviderStateMixin {
//   @override
//   bool get wantKeepAlive => true;
//
//   var unitList = [];
//   List<HomeMenuItem> checkItemList = [],
//       checkItemRiskList = [],
//       checkItemSettingsList = [];
//   var unitId = '1',
//       unitName = '使用单位',
//       officeName,
//       userName,
//       roleNames,
//       dayCount,
//       weekCount,
//       monthCount,
//       dayRiskCount,
//       weekRiskCount,
//       monthRiskCount;
//   List<dynamic>? completedDayNum = [], incompletedDayNum = [];
//   List<dynamic>? completedWeekNum = [], incompletedWeekNum = [];
//   List<dynamic>? completedMonthNum = [], incompletedMonthNum = [];
//   String? xDateDayListJson, xDateWeekListJson, xDateMonthListJson;
//   late final AnimationController _controller;
//   late final Animation<double> _animation;
//
//   @override
//   void initState() {
//     super.initState();
//
//     ///获取版本
//     checkUpdateVersion();
//     officeName = StorageUtil.getInstance().getOfficeName();
//     userName = StorageUtil.getInstance().getName();
//     roleNames = StorageUtil.getInstance().getRoleNames();
//
//     unitList = getUnitList();
//     try {
//       var unitStatus = StorageUtil.getInstance().getUnitStatus();
//       if (!StringUtils.strIsEmpty(unitStatus)) {
//         unitId = unitStatus;
//         if (unitStatus == '1') {
//           unitName = '使用单位';
//         } else if (unitStatus == '2') {
//           unitName = '生产单位';
//         }
//       } else {
//         StorageUtil.getInstance().set(SpKeys.UNIT_STATUS, unitId);
//       }
//     } catch (e) {
//       StorageUtil.getInstance().set(SpKeys.UNIT_STATUS, unitId);
//     }
//     // _requestPermission();
//
//     ///获取日管控、周排查、月调度数量
//     getCount();
//     checkItemList.add(HomeMenuItem(
//         image: 'assets/home/day_control_white_icon.png',
//         name: '日管控',
//         isContains: roleNames.contains(StandingConfig.SAFETY_OFFICER)));
//     checkItemList.add(HomeMenuItem(
//         image: 'assets/home/weekly_survey_white_icon.png',
//         name: '周排查',
//         isContains: roleNames.contains(StandingConfig.SAFETY_DIRECTOR)));
//     checkItemList.add(HomeMenuItem(
//         image: 'assets/home/monthly_scheduling_white_icon.png',
//         name: '月调度',
//         isContains: roleNames.contains(StandingConfig.PERSON_CHARGE)));
//
//     checkItemRiskList.add(HomeMenuItem(
//         image: 'assets/home/risk_bg_icon.png',
//         name: '日整改',
//         isContains: roleNames.contains(StandingConfig.SAFETY_OFFICER)));
//     checkItemRiskList.add(HomeMenuItem(
//         image: 'assets/home/risk_bg_icon.png',
//         name: '周整改',
//         isContains: roleNames.contains(StandingConfig.SAFETY_DIRECTOR)));
//     checkItemRiskList.add(HomeMenuItem(
//         image: 'assets/home/risk_bg_icon.png',
//         name: '月整改',
//         isContains: roleNames.contains(StandingConfig.PERSON_CHARGE)));
//
//     checkItemSettingsList.add(HomeMenuItem(
//         image: 'assets/home/user_settings_icon.png',
//         name: '用户设置',
//         isContains: roleNames.contains(StandingConfig.SAFETY_OFFICER)));
//     checkItemSettingsList.add(HomeMenuItem(
//         image: 'assets/home/equipment_settings_icon.png',
//         name: '设备设置',
//         isContains: roleNames.contains(StandingConfig.SAFETY_DIRECTOR)));
//     checkItemSettingsList.add(HomeMenuItem(
//         image: 'assets/home/unit_settings_icon.png',
//         name: '单位设置',
//         isContains: roleNames.contains(StandingConfig.PERSON_CHARGE)));
//
//     _controller = AnimationController(
//       duration: const Duration(seconds: 2),
//       vsync: this,
//     )..forward();
//
//     _animation = CurvedAnimation(
//       parent: _controller,
//       curve: Curves.bounceOut,
//     );
//     getDeviceData();
//   }
//
//   // List<Data>? deviceDataSyList = [], deviceDataScList = [];
//   List<ChargeUserList>? chargeList = [];
//   List<OfficeDtoLists>? deviceList = [];
//
//   getDeviceData() {
//     ///获取对应设备下的人员角色
//     HttpUtils.doFindNatureDtoList(context, onSuccess: (value) {
//       ///接口返回数据
//       RoleBo roleBo = value;
//       if (mounted) {
//         setState(() {
//           ///设备对比表格 获取主要负责人
//           HttpUtils.doFindChargeList(context, onSuccess: (value) {
//             FindChargeListBo findChargeListBo = value;
//             if (mounted) {
//               setState(() {
//                 chargeList = findChargeListBo.list;
//                 HttpUtils.getOfficeDevice(context).then((value) {
//                   if (value != null) {
//                     OfficeDevice officeDeviceItem = value;
//                     setState(() {
//                       deviceList = officeDeviceItem.office!.officeDtoList;
//                       //角色集合
//                       for (var deviceItem in deviceList!) {
//                         var director = '', officer = '';
//                         List<UserData>? userDataList = [];
//                         for (var rolesItem in roleBo.list!) {
//                           if (rolesItem.deviceTypeId ==
//                               deviceItem.deviceTypeId) {
//                             userDataList.add(rolesItem);
//                             //安全总监
//                             if (rolesItem.roleEnName == 'director') {
//                               director += '${rolesItem.userName},';
//                             }
//                             //安全员
//                             if (rolesItem.roleEnName == 'officer') {
//                               officer += '${rolesItem.userName},';
//                             }
//                           }
//                         }
//                         deviceItem.list = userDataList;
//                         deviceItem.safetyOfficer = officer;
//                         deviceItem.safetyDirector = director;
//                       }
//                     });
//                   }
//                 });
//
//                 // ///使用单位
//                 // HttpUtils.doDeviceList(context, '1', '1', onSuccess: (value) {
//                 //   DeviceListBo deviceListBo = value;
//                 //   if (mounted) {
//                 //     setState(() {
//                 //       deviceDataSyList = deviceListBo.data;
//                 //       //角色集合
//                 //       for (var deviceItem in deviceListBo.data!) {
//                 //         var director = '', officer = '';
//                 //         List<UserData>? userDataList = [];
//                 //         for (var rolesItem in roleBo.list!) {
//                 //           if (rolesItem.deviceTypeId ==
//                 //               deviceItem.deviceTypeId) {
//                 //             userDataList.add(rolesItem);
//                 //             //安全总监
//                 //             if (rolesItem.roleEnName == 'director') {
//                 //               director += '${rolesItem.userName},';
//                 //             }
//                 //             //安全员
//                 //             if (rolesItem.roleEnName == 'officer') {
//                 //               officer += '${rolesItem.userName},';
//                 //             }
//                 //           }
//                 //         }
//                 //         deviceItem.list = userDataList;
//                 //         deviceItem.safetyOfficer = officer;
//                 //         deviceItem.safetyDirector = director;
//                 //       }
//                 //
//                 //       ///将主要负责人加到设备列表下人员数组内
//                 //       for (var deviceItem in deviceListBo.data!) {
//                 //         for (var item in chargeList!) {
//                 //           UserData userData = UserData();
//                 //           userData.userName = item.name;
//                 //           userData.roleName = item.roleNames;
//                 //           deviceItem.list!.add(userData);
//                 //         }
//                 //       }
//                 //     });
//                 //   }
//                 // });
//                 //
//                 // ///生产单位
//                 // HttpUtils.doDeviceList(context, '1', '2', onSuccess: (value) {
//                 //   DeviceListBo deviceListBo = value;
//                 //   if (mounted) {
//                 //     setState(() {
//                 //       deviceDataScList = deviceListBo.data;
//                 //       //角色集合
//                 //       for (var deviceItem in deviceListBo.data!) {
//                 //         var director = '', officer = '';
//                 //         List<UserData>? userDataList = [];
//                 //         for (var rolesItem in roleBo.list!) {
//                 //           if (rolesItem.deviceTypeId ==
//                 //               deviceItem.deviceTypeId) {
//                 //             userDataList.add(rolesItem);
//                 //             //安全总监
//                 //             if (rolesItem.roleEnName == 'director') {
//                 //               director += '${rolesItem.userName},';
//                 //             }
//                 //             //安全员
//                 //             if (rolesItem.roleEnName == 'officer') {
//                 //               officer += '${rolesItem.userName},';
//                 //             }
//                 //           }
//                 //         }
//                 //         deviceItem.list = userDataList;
//                 //         deviceItem.safetyOfficer = officer;
//                 //         deviceItem.safetyDirector = director;
//                 //       }
//                 //
//                 //       ///将主要负责人加到设备列表下人员数组内
//                 //       for (var deviceItem in deviceListBo.data!) {
//                 //         for (var item in chargeList!) {
//                 //           UserData userData = UserData();
//                 //           userData.userName = item.name;
//                 //           userData.roleName = item.roleNames;
//                 //           deviceItem.list!.add(userData);
//                 //         }
//                 //       }
//                 //     });
//                 //   }
//                 // });
//               });
//             }
//           });
//         });
//       }
//     });
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     super.build(context);
//     return Scaffold(
//       backgroundColor: Colors.grey[100],
//       body: EasyRefresh(
//         header: TaurusHeaders(),
//         onRefresh: () async {
//           setState(() {
//             getCount();
//             getDeviceData();
//           });
//         },
//         child: CustomScrollView(
//           primary: false,
//           shrinkWrap: true,
//           slivers: <Widget>[
//             buildSliverAppBar(),
//
//             ///欢迎、身份
//             buildStanding(),
//
//             if (isUnitRoles(StorageUtil.getInstance().getRoleNames())!) ...[
//               ///用户设置、设备设置、单位设置布局
//               UnitGridList(onTapUser: () {
//                 Get.toNamed(RouteString.UER_LIST);
//               }, onTapEquipment: () {
//                 HttpUtils.getOfficeDevice(context).then((value) {
//                   if (value != null) {
//                     OfficeDevice officeDeviceItem = value;
//                     setState(() {
//                       var type = officeDeviceItem.office!.type!.split(',');
//                       Get.toNamed(RouteString.EQUIPMENT_TAB, arguments: type);
//                     });
//                   }
//                 });
//               }, onTapUnit: () {
//                 Get.toNamed(RouteString.UNIT_SETTINGS);
//               }),
//
//               ///设备人员对比
//               EquipmentPersonnelTable(
//                   deviceDataList: deviceList,
//                   chargeList: chargeList,
//                   onTapSyCharge: (list) {},
//                   onTapSyDirector: (value) {
//                     showDialog(
//                         context: context,
//                         barrierDismissible: true,
//                         builder: (context) {
//                           return AlertDialog(
//                             title: const Text("查看"),
//                             content: buildTable(value),
//                             actions: <Widget>[
//                               GradientButton(
//                                   tapCallback: () {
//                                     setState(() {
//                                       Get.back();
//                                     });
//                                   },
//                                   width: 70,
//                                   height: 25,
//                                   borderRadius: const BorderRadius.only(
//                                       topLeft: Radius.circular(5),
//                                       topRight: Radius.circular(15),
//                                       bottomLeft: Radius.circular(15),
//                                       bottomRight: Radius.circular(5)),
//                                   disable: false,
//                                   colors: const [
//                                     ColorConst.greenColor,
//                                     Colors.green
//                                   ],
//                                   child: const Text(
//                                     "取消",
//                                     style: TextStyle(
//                                         fontSize: 13,
//                                         color: ColorConst.whiteColor),
//                                   ))
//                             ],
//                           );
//                         });
//                   },
//                   onTapSyOfficer: (value) {}),
//
//               ///统计
//               // buildSliverStatistics(context),
//             ] else ...[
//               ///日管控、周排查、月调度布局
//               buildSliverDayWeekMonth(),
//
//               ///日管控整改、周排查整改、月调度整改布局
//               buildSliverRiskDayWeekMonth(),
//
//               ///统计
//               buildSliverStatistics(context),
//             ]
//           ],
//         ),
//       ),
//     );
//   }
//
//   Table buildTable(value) {
//     return Table(
//         border: TableBorder.all(color: ColorConst.blueColor),
//         textBaseline: TextBaseline.alphabetic,
//         defaultVerticalAlignment: TableCellVerticalAlignment.middle,
//         columnWidths: const {
//           // 0: FixedColumnWidth(130),
//           // 1: FixedColumnWidth(80),
//           // 2: FixedColumnWidth(65),
//           // 3: FixedColumnWidth(50)
//         },
//         children: [
//           TableRow(children: [
//             buildTableTitle(name: '用户类型', color: ColorConst.blueColor),
//             buildTableTitle(name: '用户名称', color: ColorConst.blueColor),
//           ]),
//           TableRow(children: [
//             Table(
//                 border:
//                     TableBorder.all(color: ColorConst.blueColor, width: 0.5),
//                 children: [
//                   for (var item in value!.list!) ...[
//                     TableRow(children: [
//                       GestureDetector(
//                         onTap: () {
//                           // onTapSyDirector!();
//                           director
//                         },
//                         child: Center(
//                             child: Container(
//                           height: 30,
//                           padding: const EdgeInsets.only(top: 5, bottom: 5),
//                           child: Text(item.roleName!,
//                               style: const TextStyle(
//                                   fontSize: 13, color: Colors.black)),
//                         )),
//                       ),
//                     ]),
//                   ]
//                 ]),
//             Table(
//                 border: TableBorder.all(color: ColorConst.blueColor),
//                 children: [
//                   for (var item in value!.list!) ...[
//                     TableRow(children: [
//                       GestureDetector(
//                         onTap: () {
//                           // onTapSyOfficer!();
//                         },
//                         child: Center(
//                             child: Container(
//                           height: 30,
//                           padding: const EdgeInsets.only(top: 5, bottom: 5),
//                           child: Text(item.userName!,
//                               style: const TextStyle(
//                                   fontSize: 13, color: Colors.black)),
//                         )),
//                       ),
//                     ]),
//                   ]
//                 ]),
//           ]),
//         ]);
//   }
//
//   Center buildTableTitle({color, name}) {
//     return Center(
//       child: Padding(
//         padding: const EdgeInsets.only(top: 8, bottom: 8),
//         child: Text(name,
//             style: TextStyle(
//                 fontWeight: FontWeight.bold, color: color, fontSize: 14)),
//       ),
//     );
//   }
//
//   Column buildTitle(icon, title) {
//     return Column(
//       children: [
//         Row(
//           children: [
//             Icon(
//               icon,
//               color: ColorConst.blueColor,
//               size: SizeConfig.isIpad()! ? 35 : 18,
//             ),
//             const SizedBox(width: 5),
//             Text(
//               title,
//               style: TextStyle(
//                   color: Colors.black54,
//                   fontSize: SizeConfig.isIpad()! ? 25 : 14,
//                   fontWeight: FontWeight.bold),
//             ),
//           ],
//         ),
//         DividerCustom(Colors.grey[300], 10, 5, 5, 10),
//       ],
//     );
//   }
//
//   ///日管控、周排查、月调度布局
//   SliverPadding buildSliverDayWeekMonth() {
//     return SliverPadding(
//       padding: const EdgeInsets.only(left: 0, right: 0, top: 0, bottom: 0),
//       // 使用SliverGrid来创建GridView
//       sliver: SliverGrid(
//         gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//           crossAxisCount: checkItemList.length,
//           crossAxisSpacing: 1,
//           mainAxisSpacing: 1,
//           childAspectRatio: 1 / 0.83, //子项的宽高比，值越大高度越高
//         ),
//         delegate: SliverChildBuilderDelegate(
//           (BuildContext context, int index) {
//             return AnimatedBuilder(
//               animation: _animation,
//               builder: (context, child) {
//                 return Transform.scale(
//                   scale: _animation.value,
//                   child: buildCheckItem(index),
//                 );
//               },
//             );
//           },
//           childCount: checkItemList.length,
//         ),
//       ),
//     );
//   }
//
//   ///日管控、周排查、月调度布局
//   SliverPadding buildSliverRiskDayWeekMonth() {
//     return SliverPadding(
//       padding: const EdgeInsets.only(left: 0, right: 0, top: 0, bottom: 0),
//       // 使用SliverGrid来创建GridView
//       sliver: SliverGrid(
//         gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//           crossAxisCount: checkItemRiskList.length,
//           crossAxisSpacing: 1,
//           mainAxisSpacing: 1,
//           childAspectRatio:
//               1 / (SizeConfig.isIpad()! ? 0.66 : 0.83), //子项的宽高比，值越大高度越高
//         ),
//         delegate: SliverChildBuilderDelegate(
//           (BuildContext context, int index) {
//             return AnimatedBuilder(
//               animation: _animation,
//               builder: (context, child) {
//                 return Transform.scale(
//                   scale: _animation.value,
//                   child: buildCheckRiskItem(index),
//                 );
//               },
//             );
//           },
//           childCount: checkItemRiskList.length,
//         ),
//       ),
//     );
//   }
//
//   InkWell buildCheckRiskItem(index) {
//     return InkWell(
//       splashColor: ColorConst.green1Color,
//       child: Column(
//         children: [
//           SizedBox(height: SizeConfig.isIpad()! ? 0 : 15),
//           Stack(
//             alignment: Alignment.center,
//             children: [
//               Container(
//                 width: SizeConfig.isIpad()! ? 150 : 50,
//                 height: SizeConfig.isIpad()! ? 150 : 50,
//                 decoration: BoxDecoration(
//                   shape: BoxShape.circle, // 设定形状为圆形
//                   gradient: LinearGradient(
//                     begin: Alignment.topLeft,
//                     end: Alignment.bottomRight,
//                     stops: const [0.4, 0.5],
//                     colors: [
//                       checkItemRiskList[index].isContains
//                           ? ColorConst.orange1Color
//                           : ColorConst.greyC2Color,
//                       checkItemRiskList[index].isContains
//                           ? ColorConst.orangeColor
//                           : ColorConst.greyC2Color,
//                     ],
//                   ),
//                 ),
//               ),
//               Image.asset(
//                 checkItemRiskList[index].image,
//                 width: SizeConfig.isIpad()! ? 60 : 30,
//                 height: SizeConfig.isIpad()! ? 60 : 30,
//               ),
//               Positioned(
//                 right: SizeConfig.isIpad()! ? 10 : 0,
//                 top: 0,
//                 child: Badge(
//                   largeSize: SizeConfig.isIpad()! ? 25 : 15,
//                   backgroundColor: Colors.red,
//                   isLabelVisible: checkItemRiskList[index].isContains,
//                   label: Text(
//                     buildCount1(index)!,
//                     style: TextStyle(fontSize: SizeConfig.isIpad()! ? 18 : 8),
//                   ),
//                 ),
//               )
//             ],
//           ),
//           buildBottomText(checkItemRiskList[index].name),
//         ],
//       ),
//       onTap: () {
//         switch (index) {
//           case 0:
//             if (checkItemRiskList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '1',
//                 'tabIndex': 1,
//                 'titleName': '日管控'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//           case 1:
//             if (checkItemRiskList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '2',
//                 'tabIndex': 1,
//                 'titleName': '周排查'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//           case 2:
//             if (checkItemRiskList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '3',
//                 'tabIndex': 1,
//                 'titleName': '月调度'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//         }
//       },
//     );
//   }
//
//   InkWell buildCheckItem(index) {
//     return InkWell(
//       splashColor: ColorConst.green1Color,
//       child: Column(
//         // mainAxisAlignment: MainAxisAlignment.center,
//         children: [
//           SizedBox(height: SizeConfig.isIpad()! ? 40 : 15),
//           Stack(
//             alignment: Alignment.center,
//             children: [
//               Container(
//                 width: SizeConfig.isIpad()! ? 150 : 50,
//                 height: SizeConfig.isIpad()! ? 150 : 50,
//                 decoration: BoxDecoration(
//                   shape: BoxShape.circle, // 设定形状为圆形
//                   gradient: LinearGradient(
//                     begin: Alignment.topLeft,
//                     end: Alignment.bottomRight,
//                     stops: const [0.4, 0.5],
//                     colors: [
//                       checkItemList[index].isContains
//                           ? ColorConst.blue4Color
//                           : ColorConst.greyC2Color,
//                       checkItemList[index].isContains
//                           ? ColorConst.blueColor
//                           : ColorConst.greyC2Color,
//                     ],
//                   ),
//                 ),
//               ),
//               Image.asset(
//                 checkItemList[index].image,
//                 width: SizeConfig.isIpad()! ? 60 : 25,
//                 height: SizeConfig.isIpad()! ? 60 : 25,
//               ),
//               Positioned(
//                 right: SizeConfig.isIpad()! ? 10 : 0,
//                 top: 0,
//                 child: Badge(
//                   largeSize: SizeConfig.isIpad()! ? 25 : 15,
//                   backgroundColor: Colors.red,
//                   isLabelVisible: checkItemList[index].isContains,
//                   label: Text(
//                     buildCount(index)!,
//                     style: TextStyle(fontSize: SizeConfig.isIpad()! ? 18 : 8),
//                   ),
//                 ),
//               )
//             ],
//           ),
//           buildBottomText(checkItemList[index].name),
//         ],
//       ),
//       onTap: () {
//         switch (index) {
//           case 0:
//             if (checkItemList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '1',
//                 'tabIndex': 0,
//                 'titleName': '日管控'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//           case 1:
//             if (checkItemList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '2',
//                 'tabIndex': 0,
//                 'titleName': '周排查'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//           case 2:
//             if (checkItemList[index].isContains) {
//               Get.toNamed(RouteString.TAB_SY, arguments: {
//                 'type': '3',
//                 'tabIndex': 0,
//                 'titleName': '月调度'
//               })?.then((value) {
//                 if (value != null && value) {
//                   ///获取日管控、周排查、月调度数量
//                   getCount();
//                 }
//               });
//             } else {
//               ToastUtils.showCenter('您没有权限访问');
//             }
//             break;
//         }
//       },
//     );
//   }
//
//   ///欢迎、身份
//   SliverToBoxAdapter buildStanding() {
//     return SliverToBoxAdapter(
//       child: Container(
//         padding: const EdgeInsets.only(left: 5),
//         color: ColorConst.whiteColor,
//         child: Column(
//           children: [
//             const SizedBox(
//               height: 5,
//             ),
//             Row(
//               children: [
//                 const SizedBox(
//                   width: 3,
//                 ),
//                 Icon(
//                   Icons.volume_down,
//                   size: SizeConfig.isIpad()! ? 30 : 20,
//                   color: ColorConst.blueColor,
//                 ),
//                 const SizedBox(
//                   width: 3,
//                 ),
//                 Expanded(
//                   child: Text.rich(
//                       softWrap: true,
//                       TextSpan(children: [
//                         TextSpan(
//                             text: '欢迎 ',
//                             style: TextStyle(
//                                 color: Colors.black54,
//                                 fontSize: SizeConfig.isIpad()! ? 20 : 12,
//                                 fontStyle: FontStyle.normal)),
//                         TextSpan(
//                             text: officeName + '-' + userName,
//                             style: TextStyle(
//                                 color: Colors.black54,
//                                 fontSize: SizeConfig.isIpad()! ? 20 : 12,
//                                 fontWeight: FontWeight.bold)),
//                       ])),
//                 ),
//               ],
//             ),
//             const SizedBox(
//               height: 3,
//             ),
//             Row(
//               children: [
//                 const SizedBox(
//                   width: 3,
//                 ),
//                 Icon(
//                   Icons.person_rounded,
//                   size: SizeConfig.isIpad()! ? 30 : 20,
//                   color: ColorConst.blueColor,
//                 ),
//                 const SizedBox(
//                   width: 3,
//                 ),
//                 Text.rich(TextSpan(children: [
//                   TextSpan(
//                       text: '您的身份：',
//                       style: TextStyle(
//                           color: Colors.black54,
//                           fontSize: SizeConfig.isIpad()! ? 20 : 12,
//                           fontStyle: FontStyle.normal)),
//                   TextSpan(
//                       text: roleNames,
//                       style: TextStyle(
//                           color: Colors.black54,
//                           fontSize: SizeConfig.isIpad()! ? 20 : 12,
//                           fontWeight: FontWeight.bold))
//                 ])),
//               ],
//             ),
//             const SizedBox(
//               height: 5,
//             ),
//           ],
//         ),
//       ),
//     );
//   }
//
//   String? buildCount(index) {
//     if (index == 0) {
//       return dayCount ?? '0';
//     } else if (index == 1) {
//       return weekCount ?? '0';
//     } else if (index == 2) {
//       return monthCount ?? '0';
//     } else {
//       return '0';
//     }
//   }
//
//   String? buildCount1(index) {
//     if (index == 0) {
//       return dayRiskCount ?? '0';
//     } else if (index == 1) {
//       return weekRiskCount ?? '0';
//     } else if (index == 2) {
//       return monthRiskCount ?? '0';
//     } else {
//       return '0';
//     }
//   }
//
//   //字
//   Container buildBottomText(name, [color]) {
//     return Container(
//       height: SizeConfig.isIpad()! ? 40 : 20,
//       margin: const EdgeInsets.only(top: 3),
//       child: Text(
//         name,
//         style:
//             TextStyle(fontSize: SizeConfig.isIpad()! ? 25 : 13, color: color),
//       ),
//     );
//   }
//
//   SliverToBoxAdapter buildSliverStatistics(BuildContext context) {
//     return SliverToBoxAdapter(
//         child: Container(
//             margin: const EdgeInsets.only(top: 0, left: 8, right: 8),
//             padding: const EdgeInsets.all(10),
//             decoration: const BoxDecoration(
//               color: Colors.white,
//               borderRadius: BorderRadius.all(Radius.circular(5)),
//             ),
//             child: Column(
//               children: [
//                 buildTitle(Icons.equalizer, '统计'),
//                 HomeEchartTab(
//                     roleNames,
//                     completedDayNum,
//                     incompletedDayNum,
//                     xDateDayListJson,
//                     completedWeekNum,
//                     incompletedWeekNum,
//                     xDateWeekListJson,
//                     completedMonthNum,
//                     incompletedMonthNum,
//                     xDateMonthListJson),
//               ],
//             )));
//   }
//
//   SliverAppBar buildSliverAppBar() {
//     return SliverAppBar(
//       expandedHeight: SizeConfig.isIpad()! ? 300 : 170.0,
//       floating: true,
//       pinned: true,
//       flexibleSpace: FlexibleSpaceBar(
//         centerTitle: true,
//         background: Stack(
//           children: [
//             Image.asset('assets/home/top_bg_icon.png',
//                 width: MediaQuery.of(context).size.width, fit: BoxFit.fill),
//             Positioned(
//               bottom: SizeConfig.isIpad()! ? 190 : 90,
//               left: SizeConfig.isIpad()!
//                   ? MediaQuery.of(context).size.width / 2 - 70
//                   : MediaQuery.of(context).size.width / 2 - 50,
//               child: isRolesName(StorageUtil.getInstance().getRoleNames())
//                   ? _buildCheckUnit()
//                   : const SizedBox(),
//             )
//           ],
//         ),
//       ),
//       title: Column(
//         children: [
//           Text(
//             '晋特保助手',
//             style: TextStyle(fontSize: SizeConfig.isIpad()! ? 35 : 20),
//           ),
//         ],
//       ),
//       actions: [
//         InkWell(
//           onTap: () {
//             showDialog(
//                 context: context,
//                 builder: (context) {
//                   return AlertDialog(
//                     content: const Text("您确定要退出登录吗？"),
//                     actions: [
//                       TextButton(
//                         child: const Text("取消"),
//                         onPressed: () {
//                           Navigator.of(context).pop();
//                         },
//                       ),
//                       TextButton(
//                           child: const Text("确定"),
//                           onPressed: () {
//                             _loginOut();
//                           })
//                     ],
//                   );
//                 });
//           },
//           child: Padding(
//             padding: const EdgeInsets.only(left: 15, right: 15),
//             child: Icon(Icons.power_settings_new,
//                 size: SizeConfig.isIpad()! ? 35 : 20),
//           ),
//         ),
//         const SizedBox(
//           width: 10,
//         ),
//       ],
//     );
//   }
//
//   ///退出登录
//   _loginOut() async {
//     HttpUtils.doLoginOut(context).then((value) {
//       if (mounted) {
//         ///清除本地所有数据
//         StorageUtil.getInstance().clearAll();
//         Get.offAllNamed(RouteString.LOGIN);
//       }
//     });
//   }
//
//   ///切换单位
//   Row _buildCheckUnit() {
//     return Row(
//       mainAxisAlignment: MainAxisAlignment.center,
//       children: [
//         PopupMenuButton<int>(
//           padding: const EdgeInsets.all(0),
//           shadowColor: ColorConst.themeBgColor,
//           offset: const Offset(3.5, 30),
//           shape: RoundedRectangleBorder(
//             // side: BorderSide(color: Colors.red, width: 2),
//             borderRadius: BorderRadius.circular(10),
//           ),
//           child: Container(
//             padding:
//                 const EdgeInsets.only(left: 20, top: 5, right: 10, bottom: 5),
//             decoration: BoxDecoration(
//               border: Border.all(color: Colors.white, width: 0.5),
//               borderRadius: BorderRadius.circular(10),
//             ),
//             child: Row(
//               children: [
//                 const SizedBox(width: 0),
//                 Text(unitName,
//                     style: TextStyle(
//                         fontSize: SizeConfig.isIpad()! ? 25 : 14,
//                         color: Colors.white)),
//                 const Icon(
//                   Icons.arrow_drop_down,
//                   color: Colors.white,
//                   size: 18,
//                 )
//               ],
//             ),
//           ),
//           itemBuilder: (context) => [
//             for (var i = 0; i < unitList.length; i++) ...[
//               PopupMenuItem(
//                 height: 35,
//                 padding: const EdgeInsets.only(
//                     left: 25, right: 0, top: 0, bottom: 0),
//                 value: i,
//                 child: Text('${unitList[i].name}',
//                     style: const TextStyle(color: Colors.black, fontSize: 14)),
//               ),
//             ],
//           ],
//           onSelected: (value) {
//             setState(() {
//               unitName = unitList[value].name;
//               unitId = unitList[value].id;
//               StorageUtil.getInstance().set(SpKeys.UNIT_STATUS, unitId);
//               getCount();
//               Get.snackbar("提示", "您已切换到<$unitName>",
//                   colorText: Colors.black,
//                   backgroundColor: ColorConst.whiteColor,
//                   snackPosition: SnackPosition.TOP, // 这里设置弹窗出现在顶部
//                   duration: const Duration(seconds: 1));
//             });
//           },
//         ),
//       ],
//     );
//   }
//
//   ///获取数据
//   void getCount() {
//     ///判断是否是公司账户、管理员、市场监管局登录，是：显示统计图
//     if (isRolesName1(StorageUtil.getInstance().getRoleNames())) {
//       ///判断是否有权限访问
//       if (roleNames.contains(StandingConfig.SAFETY_OFFICER)) {
//         ///获取日管控数量
//         HttpUtils.doCount(context, '0', '1').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               dayCount = countBo.userAllTaskDayCount.toString();
//             });
//           }
//         });
//
//         ///获取日管控整改数量
//         HttpUtils.doCount(context, '2', '1').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               dayRiskCount = countBo.userAllTaskDayCount.toString();
//             });
//           }
//         });
//
//         HttpUtils.doEchartDay(context, '1').then((value) {
//           EchartBo echartBo = value;
//           if (mounted) {
//             setState(() {
//               List<String>? xDateDayList = [];
//               completedDayNum!.clear();
//               incompletedDayNum!.clear();
//               xDateDayList.clear();
//               for (var item in echartBo.sevenTaskCounts!) {
//                 completedDayNum!.add(item.completedNum.toString());
//                 incompletedDayNum!.add(item.incompletedNum.toString());
//                 String formattedDate =
//                     DateFormat('MM.dd').format(DateTime.parse(item.dateStr!));
//                 xDateDayList.add(formattedDate);
//               }
//               xDateDayListJson = jsonEncode(xDateDayList);
//             });
//           }
//         });
//       }
//
//       ///判断是否有权限访问
//       if (roleNames.contains(StandingConfig.SAFETY_DIRECTOR)) {
//         ///获取周排查数量
//         HttpUtils.doCount(context, '0', '2').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               weekCount = countBo.userAllTaskWeekCount.toString();
//             });
//           }
//         });
//
//         ///获取周排查数量
//         HttpUtils.doCount(context, '2', '2').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               weekRiskCount = countBo.userAllTaskWeekCount.toString();
//             });
//           }
//         });
//         HttpUtils.doEchartDay(context, '2').then((value) {
//           EchartBo echartBo = value;
//           if (mounted) {
//             setState(() {
//               List<String>? xDateWeekList = [];
//               completedWeekNum!.clear();
//               incompletedWeekNum!.clear();
//               xDateWeekList.clear();
//               for (var item in echartBo.sevenTaskCounts!) {
//                 completedWeekNum!.add(item.completedNum.toString());
//                 incompletedWeekNum!.add(item.incompletedNum.toString());
//                 xDateWeekList.add('${item.dateStr}周');
//               }
//               xDateWeekListJson = jsonEncode(xDateWeekList);
//             });
//           }
//         });
//       }
//
//       ///判断是否有权限访问
//       if (roleNames.contains(StandingConfig.PERSON_CHARGE)) {
//         ///获取月调度数量
//         HttpUtils.doCount(context, '0', '3').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               monthCount = countBo.userAllTaskMonthCount.toString();
//             });
//           }
//         });
//
//         ///获取月调度数量
//         HttpUtils.doCount(context, '2', '3').then((value) {
//           CountBo countBo = value;
//           if (mounted) {
//             setState(() {
//               monthRiskCount = countBo.userAllTaskMonthCount.toString();
//             });
//           }
//         });
//         HttpUtils.doEchartDay(context, '3').then((value) {
//           EchartBo echartBo = value;
//           if (mounted) {
//             setState(() {
//               List<String>? xDateMonthList = [];
//               completedMonthNum!.clear();
//               incompletedMonthNum!.clear();
//               xDateMonthList.clear();
//               for (var item in echartBo.sevenTaskCounts!) {
//                 completedMonthNum!.add(item.completedNum.toString());
//                 incompletedMonthNum!.add(item.incompletedNum.toString());
//                 xDateMonthList.add('${item.dateStr}月');
//               }
//               xDateMonthListJson = jsonEncode(xDateMonthList);
//             });
//           }
//         });
//       }
//     } else {
//       HttpUtils.doEchartDay(context, '1').then((value) {
//         EchartBo echartBo = value;
//         if (mounted) {
//           setState(() {
//             List<String>? xDateDayList = [];
//             completedDayNum!.clear();
//             incompletedDayNum!.clear();
//             xDateDayList.clear();
//             for (var item in echartBo.sevenTaskCounts!) {
//               completedDayNum!.add(item.completedNum.toString());
//               incompletedDayNum!.add(item.incompletedNum.toString());
//               String formattedDate =
//                   DateFormat('MM.dd').format(DateTime.parse(item.dateStr!));
//               xDateDayList.add(formattedDate);
//             }
//             xDateDayListJson = jsonEncode(xDateDayList);
//           });
//         }
//       });
//       HttpUtils.doEchartDay(context, '2').then((value) {
//         EchartBo echartBo = value;
//         if (mounted) {
//           setState(() {
//             List<String>? xDateWeekList = [];
//             completedWeekNum!.clear();
//             incompletedWeekNum!.clear();
//             xDateWeekList.clear();
//             for (var item in echartBo.sevenTaskCounts!) {
//               completedWeekNum!.add(item.completedNum.toString());
//               incompletedWeekNum!.add(item.incompletedNum.toString());
//               xDateWeekList.add('${item.dateStr}周');
//             }
//             xDateWeekListJson = jsonEncode(xDateWeekList);
//           });
//         }
//       });
//       HttpUtils.doEchartDay(context, '3').then((value) {
//         EchartBo echartBo = value;
//         if (mounted) {
//           setState(() {
//             List<String>? xDateMonthList = [];
//             completedMonthNum!.clear();
//             incompletedMonthNum!.clear();
//             xDateMonthList.clear();
//             for (var item in echartBo.sevenTaskCounts!) {
//               completedMonthNum!.add(item.completedNum.toString());
//               incompletedMonthNum!.add(item.incompletedNum.toString());
//               xDateMonthList.add('${item.dateStr}月');
//             }
//             xDateMonthListJson = jsonEncode(xDateMonthList);
//           });
//         }
//       });
//     }
//   }
//
//   /// 检查是否需要版本更新
//   Future<bool> checkUpdateVersion() async {
//     PackageInfo packageInfo = await PackageInfo.fromPlatform();
//     var versionCodeLoc = packageInfo.buildNumber;
//     bool check = false;
//     HttpUtils.getVersionUpdate(context).then((value) {
//       VersionBo versionBo = value;
//       var apkVersion = versionBo.apkVersion;
//       if (apkVersion == null) {
//         return;
//       }
//       var versionCode = int.parse(apkVersion.verionCode!);
//
//       ///本地versionCode小于接口返回versionCode提示升级
//       if (int.parse(versionCodeLoc) < versionCode) {
//         ///android端
//         if (Platform.isAndroid) {
//           AppInfo appInfo = AppInfo();
//           appInfo.versionCode = versionCode;
//           appInfo.updateLog = apkVersion.updateLog;
//           appInfo.isForce = true; //是否强制更新
//           appInfo.hasUpdate = true; //是否有新版本
//           appInfo.isIgnorable = false; //是否可忽略该版本
//           appInfo.versionName = apkVersion.versionName;
//           appInfo.apkUrl = apkVersion.apkUrl;
//           appInfo.apkSize = int.parse(apkVersion.apkSize!);
//           appUpdate(appInfo);
//         } else if (Platform.isIOS) {
//           WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
//             showDialog(
//                 context: context,
//                 barrierDismissible: false,
//                 builder: (context) {
//                   return AlertDialog(
//                     title: Text("请更新版本到${apkVersion.versionName}"),
//                     content: Text(apkVersion.updateLog!),
//                     actions: <Widget>[
//                       InkWell(
//                         onTap: () {
//                           /// 在这里添加打开应用商店的代码
//                           _launchURL();
//                         },
//                         child: Center(
//                           child: Container(
//                             alignment: Alignment.center,
//                             width: MediaQuery.of(context).size.width * 0.6,
//                             height: 40,
//                             decoration: const BoxDecoration(
//                               color: ColorConst.blueColor,
//                               borderRadius:
//                                   BorderRadius.all(Radius.circular(5)),
//                             ),
//                             // color: ColorConst.blueColor,
//                             child: const Text("去更新",
//                                 style: TextStyle(
//                                     fontSize: 16,
//                                     color: ColorConst.whiteColor)),
//                           ),
//                         ),
//                       ),
//                     ],
//                   );
//                 });
//           });
//         }
//       }
//     });
//     return check;
//   }
//
//   final Uri _url = Uri.parse('https://apps.apple.com/cn/app/id6469591631');
//
//   _launchURL() async {
//     if (await canLaunchUrl(_url)) {
//       await launchUrl(_url);
//     } else {
//       throw 'Could not launch $_url';
//     }
//   }
//
//   void appUpdate(appInfo) async {
//     CheckUpdate checkUpdate = CheckUpdate();
//     await checkUpdate.initXUpdate();
//     await checkUpdate.checkUpdateByUpdateEntity(appInfo);
//   }
//
//   @override
//   void dispose() {
//     _controller.dispose();
//     super.dispose();
//   }
//
// // _requestPermission() async {
// //   // var camera = await Permission.camera.status;
// //   // var storage = await Permission.storage.status;
// //   var location = await Permission.location.status;
// //   if (location != PermissionStatus.granted) {
// //     var future = await [
// //       Permission.location,
// //     ].request();
// //
// //     for (final item in future.entries) {
// //       if (item.value != PermissionStatus.granted) {
// //         return false;
// //       }
// //     }
// //   }
// //   return true;
// // }
// }
