import 'dart:convert';
import 'dart:developer' as developer;
import 'dart:io';
import 'dart:math';
import 'package:camera/camera.dart';
import 'package:convert/convert.dart';
import 'package:crypto/crypto.dart' as crypto;
import 'package:device_info/device_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
//import '../my_wechat_assets_picker_fix/my_asset_picker_1.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hyzp_ybqx511528_xingwen/provider/player_region.dart';
import 'UserInfo.dart';
////////////////////////////////////////////
// begin hyzp_ybqx-Commit022-区县切换新方法-OK
// 1、修改手机桌面的App图标文本
// R:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\AndroidManifest.xml
// android:label="宜宾黑烟抓拍"
// android:label="宜宾市翠屏黑烟抓拍"
// android:label="宜宾三江新区黑烟抓拍"
// android:label="宜宾市长宁黑烟抓拍"
// android:label="宜宾市筠连黑烟抓拍"
// android:label="宜宾市兴文黑烟抓拍"
// 2、修改App的android和Flutter启动图片,制作并运行 hyzp_ybqx511528_xingwen.images_copy.cmd,自动完成两项拷贝任务
// (1)、拷贝不同分辨率的图片文件hyzp_ybqx511528_xingwen_launche.png到下面目录,作为App的android启动图片
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\res\mipmap-hdpi\
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\res\mipmap-mdpi\
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\res\mipmap-xhdpi\
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\res\mipmap-xxhdpi\
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\android\app\src\main\res\mipmap-xxxhdpi\
// (2)、拷贝 750 * 1334 的图片文件到下面目录,作为App的Flutter启动图片
// r:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\assets\images\hyzp_ybqx01_cuiping_launche.png
// 3、修改文本变量
// 位于文件 R:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\lib\components\commonFun.dart 中
// 511501、宜宾市
// String service_tel = '\n服务热线:187-8467-8300';
// String yibin_QuXian = '宜宾';
// String copyright_info = '© ' + yibin_QuXian + '市生态环境局 四川省踏石科技有限公司 版权所有' + service_tel;
// String copyright_info_PinYin = 'YIBIN BLACK SMOKE CAR CAPTURE SYSTEM';
// const serviceUrl_ybqx = 'http://125.64.218.67:9904';
const serviceUrl_ybqx = 'http://125.64.218.67:9909';
// 511502、翠屏区
// int qxdm = 511502;
// String service_tel = '';
// String yibin_QuXian = '宜宾市翠屏';
// String copyright_info = '© ' + yibin_QuXian + '生态环境局 版权所有' + service_tel;
// String copyright_info_PinYin = 'YIBIN CUIPING BLACK SMOKE CAR CAPTURE SYSTEM';
// 511505、三江新区
// String service_tel = '服务热线:187-8467-8300';
// String yibin_QuXian = '宜宾三江新区';
// String copyright_info = '© ' + yibin_QuXian + '城乡融合发展局 四川省踏石科技\n版权所有, ' + service_tel;
// String copyright_info_PinYin = 'YIBIN SANJIANG NEW AREA BLACK SMOKE CAR CAPTURE SYSTEM';
// 511524、长宁县
// String service_tel = '';
// String yibin_QuXian = '宜宾市长宁';
// String copyright_info = '© ' + yibin_QuXian + '生态环境局 版权所有' + service_tel;
// String copyright_info_PinYin = 'YIBIN CHANGNING BLACK SMOKE CAR CAPTURE SYSTEM';
// 511527、筠连县
// String service_tel = '\n服务热线:187-8467-8300';
// String yibin_QuXian = '宜宾市筠连';
// String copyright_info = '© ' + yibin_QuXian + '生态环境局 四川省踏石科技 版权所有' + service_tel;
// String copyright_info_PinYin = 'YIBIN JUNLIAN BLACK SMOKE CAR CAPTURE SYSTEM';
// 511528、兴文县
int qxdm = 511528;
String service_tel = '\n服务热线:187-8467-8300';
String yibin_QuXian = '宜宾市兴文';
String copyright_info = '© ' + yibin_QuXian + '生态环境局 四川省踏石科技 版权所有' + service_tel;
String copyright_info_PinYin = 'YIBIN XINGWEN BLACK SMOKE CAR CAPTURE SYSTEM';
// 4、全局替换,将 ”hyzp_ybqx511528_xingwen“全部替换为 ”hyzp_ybqx511528_xingwen“,自动完成以下修改
// (1)、修改 R:\FlutterProject\FlutterProject51-hyzp_ybqx\hyzp_ybqx\pubspec.yaml 文件中的AppID,但存放目錄不變
// name: hyzp_ybqx511528_xingwen
// (2)、全局替换:
// A、将 “com.flutter.hyzp_ybqx00_yibin” 全部替换为 “com.flutter.hyzp_ybqx511528_xingwen”
// B、将 “package:hyzp_ybqx00_yibin/” 全部替换为 “package:hyzp_ybqx511528_xingwen/”
// C、将 “# hyzp_ybqx00_yibin” 全部替换为 “# hyzp_ybqx511528_xingwen”
// D、将 “hyzp_ybqx00_yibin” 全部替换为 “hyzp_ybqx511528_xingwen”
// 5、完成以上修改后,打开 Android Studio 的终端窗口,切换到项目的 lib 目录下,运行 flutter clean
// 6、重新编译运行App
// end hyzp_ybqx-Commit022-区县切换新方法-OK
////////////////////////////////////////////
//LED字幕信息
//String g_ledMessage = '绿水青山就是金山银山 宜宾市翠屏生态环境局宣。';
// 是否已经调用 FlutterDownloader.initialize(debug: true)
bool bFlutterDownloader_initialize = false;
bool bNewVer = false; //是否发现新版本
//处理延时登录,判断从网络获取三种统计数据是否完成
bool bMayLogin = false;
//处理延时登录,判断是否已经点击登录按钮
bool bPreLoading = false;
//处理延时登录,判断用户名登录是否验证通过
bool bLoginVerify = false;
bool bHasMore = true;
//part library
//dart中,通过使用part、part of、library来实现拆分库,这样,就可以将一个庞大的库拆分成各种小库,只要引用主库即可
//点位总数
int dwSum = -1;
Size sizeWindowPhysicalSize;
//String dateAppCompile = '2020.12.30'; //1.0.1+1
//String dateAppCompile = '2021.02.20'; //1.2.5+1
//String dateAppCompile = '2021.03.18'; //1.2.6+1
//String dateAppCompile = '2021.05.18'; //1.2.7
List g_list = [];
//正在获取点位视频标志,禁止重入
bool getingDwVideo = false;
int getCount = 1; //获取点位视频地址尝试次数
int getSumTime = 0; //获取点位视频地址耗时(秒)
int getingIndex = -1; //正在获取视频的点位的索引号
String getingDwmc = ''; //正在获取视频的点位名称
String urlnew =
"http://www.yibinu.edu.cn/__local/5/35/DF/264049B7E978EEE2F5849688986_05D4A6FE_152CDB8C.mp4?e=.mp4";
bool isVideoUrl(String url, {bool showToast = false}) {
print('url = $url');
String prefix = url.substring(0, 4);
List list = ['http', 'rtmp', 'rstp'];
for (String item in list) {
if (prefix == item) {
return true;
}
}
if (showToast) {
Fluttertoast.showToast(
msg: '获取视频地址失败',
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
);
}
return false;
}
final TextEditingController myController = TextEditingController();
bool Playing = false; //禁止同时启动两次播放器
//final FijkPlayer player = FijkPlayer();
int g_iIndex = 0;
PlayerRegionProvide playerRegionProvide;
Future sysPop() async {
// currentPos = player.currentPos.inMilliseconds; //seekto方法的参数是毫秒
// await writeCurrentPosFile();
// await player.stop();
await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
}
//人脸注册和人脸识别登录成功标志
int faceReg = -1; //1 成功,0 失败,-1 处理中
int faceLogin = -1; //1 成功,0 失败,-1 处理中
//人脸注册时所需用户ID
int faceRegUserID = -1; //人脸注册时所需用户ID,-1 非法
List cameras;
UserInfo g_userInfo = UserInfo(mapUserInfoRet: {
"ret": 200,
"data": {
"is_login": true,
"user_id": 1,
"token": "B93EC91FA2FE293B7077162D4527FC4BB228CD6C0A4F24A882B9A8BBE6C3FB47"
},
"msg": ""
});
Future