Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea1ec2c3bf | ||
|
|
419c614ba4 | ||
|
|
8660f34617 | ||
|
|
0a5c013060 | ||
|
|
1969f3e142 | ||
|
|
c49207e0d1 | ||
|
|
bfb8284bf0 | ||
|
|
99cce09b19 | ||
|
|
67896aef90 | ||
|
|
840a7145ce |
@@ -41,6 +41,9 @@ android {
|
|||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
|
ndk {
|
||||||
|
abiFilters "arm64-v8a", "armeabi", "armeabi-v7a", "mips" // 不支持"x86", "x86_64"模拟器
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":20221111,"versionName":"1.6.1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":20250521,"versionName":"1.6.4","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
||||||
@@ -36,6 +36,9 @@
|
|||||||
<!-- 请求忽略电池优化,用于后台定时提醒等 -->
|
<!-- 请求忽略电池优化,用于后台定时提醒等 -->
|
||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
|
||||||
|
|
||||||
|
<!-- Permissions options for the `location` group -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name="com.flutter.hyzp_ybqx.MyApplication"
|
android:name="com.flutter.hyzp_ybqx.MyApplication"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.5.0'
|
classpath 'com.android.tools.build:gradle:3.5.4'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,3 +2,4 @@ org.gradle.jvmargs=-Xmx1536M
|
|||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
android.enableR8=true
|
android.enableR8=true
|
||||||
|
org.gradle.java.home=c:\\Users\\WinUser01\\.jdks\\jbr_11.0.15_2022-04-19
|
||||||
|
|||||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
@@ -310,7 +310,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.hyzpYibin;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.hyzpYbqx;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
@@ -438,7 +438,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.hyzpYibin;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.hyzpYbqx;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
@@ -461,7 +461,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.hyzpYibin;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.hyzpYbqx;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ class UserInfo {
|
|||||||
qx_name_long = '宜宾市' + trim_county(qx_name);
|
qx_name_long = '宜宾市' + trim_county(qx_name);
|
||||||
service_tel = '\n服务热线:187-8467-8300';
|
service_tel = '\n服务热线:187-8467-8300';
|
||||||
copyright_info = '© ' + qx_name_long + '生态环境局 四川省踏石科技 版权所有' + service_tel;
|
copyright_info = '© ' + qx_name_long + '生态环境局 四川省踏石科技 版权所有' + service_tel;
|
||||||
|
official_seal = qx_name_long + '生态环境局' + '.png'; // 区县单位公章
|
||||||
// 中心地址:宜宾市白塔山
|
// 中心地址:宜宾市白塔山
|
||||||
center_latitude = 28.77914; // 区县中心纬度
|
center_latitude = 28.77914; // 区县中心纬度
|
||||||
center_longitude = 104.644079; // 区县中心经度
|
center_longitude = 104.644079; // 区县中心经度
|
||||||
@@ -109,6 +110,11 @@ class UserInfo {
|
|||||||
qx_name_long = '宜宾' + qx_name;
|
qx_name_long = '宜宾' + qx_name;
|
||||||
copyright_info = '© ' + qx_name_long + '城乡融合发展局 四川省踏石科技\n版权所有,' + service_tel.substring(1);
|
copyright_info = '© ' + qx_name_long + '城乡融合发展局 四川省踏石科技\n版权所有,' + service_tel.substring(1);
|
||||||
copyright_info_PinYin = 'YIBIN SANJIANG NEW AREA BLACK SMOKE CAR CAPTURE SYSTEM';
|
copyright_info_PinYin = 'YIBIN SANJIANG NEW AREA BLACK SMOKE CAR CAPTURE SYSTEM';
|
||||||
|
|
||||||
|
// 经测试发现,当images目录下面的图片文件名长度达到14个汉字便会报错,将该文件名称改为“宜宾三江新区城乡融合发展局.png”,编译通过
|
||||||
|
// “r:\FlutterProject\FlutterProject61-hyzp_ybqx_with_ios\hyzp_ybqx\assets\images\宜宾三江新区城乡融合发展局.png”
|
||||||
|
official_seal = qx_name_long + '城乡融合发展局' + '.png'; // 区县单位公章
|
||||||
|
|
||||||
// 中心地址:
|
// 中心地址:
|
||||||
// 点击底图空白处响应:coordinate = {latitude: 28.822633806922394, longitude: 104.75964294854222}
|
// 点击底图空白处响应:coordinate = {latitude: 28.822633806922394, longitude: 104.75964294854222}
|
||||||
center_latitude = 28.822633806922394; // 区县中心纬度
|
center_latitude = 28.822633806922394; // 区县中心纬度
|
||||||
@@ -161,6 +167,7 @@ class UserInfo {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
print('official_seal = $official_seal'); // official_seal = 宜宾市长宁生态环境局.png
|
||||||
}
|
}
|
||||||
|
|
||||||
// 去除末尾的区县
|
// 去除末尾的区县
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import 'dart:math';
|
|||||||
import 'package:ai_save_account/ai_save_account.dart';
|
import 'package:ai_save_account/ai_save_account.dart';
|
||||||
import 'package:audioplayers/audio_cache.dart';
|
import 'package:audioplayers/audio_cache.dart';
|
||||||
import 'package:audioplayers/audioplayers.dart';
|
import 'package:audioplayers/audioplayers.dart';
|
||||||
|
|
||||||
import 'package:camera/camera.dart';
|
import 'package:camera/camera.dart';
|
||||||
import 'package:convert/convert.dart';
|
import 'package:convert/convert.dart';
|
||||||
import 'package:crypto/crypto.dart' as crypto;
|
import 'package:crypto/crypto.dart' as crypto;
|
||||||
@@ -15,17 +14,13 @@ import 'package:device_info/device_info.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
import 'package:hyzp_ybqx/provider/player_region.dart';
|
import 'package:hyzp_ybqx/provider/player_region.dart';
|
||||||
|
|
||||||
import 'UserInfo.dart';
|
import 'UserInfo.dart';
|
||||||
import 'dioFun.dart';
|
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
double g_radioImage = 10 / 16; // 违章图片默认宽高比率
|
double g_radioImage = 10 / 16; // 违章图片默认宽高比率
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AudioPlayer playerClick;
|
AudioPlayer playerClick;
|
||||||
AudioPlayer playerClacks;
|
AudioPlayer playerClacks;
|
||||||
@@ -124,6 +119,52 @@ List listReviewed = [];
|
|||||||
bool g_bVoiceRemind = false; // 用户设置是否开启语音提醒
|
bool g_bVoiceRemind = false; // 用户设置是否开启语音提醒
|
||||||
int g_remindGap = 60; // 提醒间隔默认为60S,0表示取消定时提醒
|
int g_remindGap = 60; // 提醒间隔默认为60S,0表示取消定时提醒
|
||||||
|
|
||||||
|
bool g_bSaveDefaultMap = false; // 是否保存默认地图
|
||||||
|
String g_defaultMapName = ''; // 用户选择的默认地图名称
|
||||||
|
// 获取地图的中文名称
|
||||||
|
String getMapChsName(String mapName) {
|
||||||
|
if (mapName.length == 0) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
mapName = mapName.toLowerCase();
|
||||||
|
String mapKey = '';
|
||||||
|
String _mapChsName = '';
|
||||||
|
|
||||||
|
// 查找包含 mapName 的最短 key
|
||||||
|
for (var key in mapChsName.keys) {
|
||||||
|
// print('$key ${mapChsName[key]}');
|
||||||
|
if (mapName.indexOf(key) > -1) {
|
||||||
|
if (mapKey.length == 0 || key.length < mapKey.length) {
|
||||||
|
mapKey = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_mapChsName = mapChsName[mapKey];
|
||||||
|
|
||||||
|
if (_mapChsName == null) {
|
||||||
|
_mapChsName = mapName + (mapName.length > 0 ? '地图' : '');
|
||||||
|
}
|
||||||
|
return _mapChsName;
|
||||||
|
}
|
||||||
|
|
||||||
|
// key 全部小写
|
||||||
|
Map<String, String> mapChsName = {
|
||||||
|
'apple': '苹果地图',
|
||||||
|
'google': '谷歌地图',
|
||||||
|
'googlego': '谷歌地图轻量版',
|
||||||
|
'amap': '高德地图',
|
||||||
|
'baidu': '百度地图',
|
||||||
|
'waze': '位智地图',
|
||||||
|
'yandexmaps': 'Yandex地图',
|
||||||
|
'yandexnavi': 'Yandex导航地图',
|
||||||
|
'citymapper': '城市地图',
|
||||||
|
'mapswithme': '离线地图',
|
||||||
|
'osmand': 'OsmAnd地图',
|
||||||
|
'doubleGis': 'doubleGis地图',
|
||||||
|
'tencent': '腾讯地图',
|
||||||
|
};
|
||||||
|
|
||||||
// Timer g_remindTimer; //定时提醒变量
|
// Timer g_remindTimer; //定时提醒变量
|
||||||
//
|
//
|
||||||
// // 设置定时提醒
|
// // 设置定时提醒
|
||||||
@@ -187,6 +228,7 @@ String copyright_info_PinYin = '';
|
|||||||
// 区县中心地址
|
// 区县中心地址
|
||||||
double center_latitude = -1; // 区县中心纬度
|
double center_latitude = -1; // 区县中心纬度
|
||||||
double center_longitude = -1; // 区县中心经度
|
double center_longitude = -1; // 区县中心经度
|
||||||
|
String official_seal = ''; // 区县单位公章
|
||||||
|
|
||||||
clear_user_info() {
|
clear_user_info() {
|
||||||
qx_code = -1;
|
qx_code = -1;
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
// g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; // 默认关闭
|
// g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; // 默认关闭
|
||||||
g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; // 默认开启
|
g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; // 默认开启
|
||||||
// print('g_bVoiceRemind = $g_bVoiceRemind');
|
// print('g_bVoiceRemind = $g_bVoiceRemind');
|
||||||
g_remindGap = await Storage.getInt('nRemindGap');
|
g_remindGap = await Storage.getInt('nRemindGap');
|
||||||
g_remindGap = (null == g_remindGap) ? 60 : g_remindGap; // 提醒间隔默认为60S
|
g_remindGap = (null == g_remindGap) ? 60 : g_remindGap; // 提醒间隔默认为60S
|
||||||
|
|
||||||
eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新'));
|
eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新'));
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
|
|||||||
case TXLiveConstants.PLAY_ERR_NET_DISCONNECT:
|
case TXLiveConstants.PLAY_ERR_NET_DISCONNECT:
|
||||||
case TXLiveConstants.PLAY_EVT_PLAY_END:
|
case TXLiveConstants.PLAY_EVT_PLAY_END:
|
||||||
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) { // 直播时移失败,返回直播
|
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) { // 直播时移失败,返回直播
|
||||||
mLivePlayer.resumeLive();
|
// mLivePlayer.resumeLive();
|
||||||
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
|
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
|
||||||
onError(SuperPlayerCode.LIVE_SHIFT_FAIL, "时移失败,返回直播");
|
onError(SuperPlayerCode.LIVE_SHIFT_FAIL, "时移失败,返回直播");
|
||||||
updatePlayerState(SuperPlayerDef.PlayerState.PLAYING);
|
updatePlayerState(SuperPlayerDef.PlayerState.PLAYING);
|
||||||
@@ -501,7 +501,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
TXCLog.e(TAG, "playTimeShiftLiveURL: bizidNum error = " + bizid);
|
TXCLog.e(TAG, "playTimeShiftLiveURL: bizidNum error = " + bizid);
|
||||||
}
|
}
|
||||||
mLivePlayer.prepareLiveSeek(domian, bizidNum);
|
// mLivePlayer.prepareLiveSeek(domian, bizidNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -733,7 +733,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
|
|||||||
@Override
|
@Override
|
||||||
public void resumeLive() {
|
public void resumeLive() {
|
||||||
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) {
|
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) {
|
||||||
mLivePlayer.resumeLive();
|
// mLivePlayer.resumeLive();
|
||||||
}
|
}
|
||||||
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
|
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
|
||||||
}
|
}
|
||||||
@@ -808,7 +808,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
|
|||||||
updatePlayerType(SuperPlayerDef.PlayerType.LIVE_SHIFT);
|
updatePlayerType(SuperPlayerDef.PlayerType.LIVE_SHIFT);
|
||||||
LogReport.getInstance().uploadLogs(LogReport.ELK_ACTION_TIMESHIFT, 0, 0);
|
LogReport.getInstance().uploadLogs(LogReport.ELK_ACTION_TIMESHIFT, 0, 0);
|
||||||
if (mLivePlayer != null) {
|
if (mLivePlayer != null) {
|
||||||
mLivePlayer.seek(position);
|
// mLivePlayer.seek(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mObserver != null) {
|
if (mObserver != null) {
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import 'package:flutter_bmfmap/BaiduMap/bmfmap_map.dart';
|
|||||||
import 'package:flutter_screenutil/screen_util.dart';
|
import 'package:flutter_screenutil/screen_util.dart';
|
||||||
import 'package:hyzp_ybqx/components/commonFun.dart';
|
import 'package:hyzp_ybqx/components/commonFun.dart';
|
||||||
import 'package:hyzp_ybqx/components/hyxx_data_handle.dart';
|
import 'package:hyzp_ybqx/components/hyxx_data_handle.dart';
|
||||||
|
import 'package:map_launcher/map_launcher.dart';
|
||||||
|
|
||||||
import '../../../components/dioFun.dart';
|
import '../../../components/dioFun.dart';
|
||||||
|
import '../../../services/Storage.dart';
|
||||||
import 'dwInfoDialog.dart';
|
import 'dwInfoDialog.dart';
|
||||||
import 'dwInfo_data.dart';
|
import 'dwInfo_data.dart';
|
||||||
|
|
||||||
@@ -20,6 +22,11 @@ class BasicMap extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _BasicMapState extends State<BasicMap> {
|
class _BasicMapState extends State<BasicMap> {
|
||||||
|
// 导航相关代码
|
||||||
|
double destinationLatitude = 28.45382237207785;
|
||||||
|
double destinationLongitude = 104.7506958256658;
|
||||||
|
String destinationTitle = '珙县大坪上';
|
||||||
|
|
||||||
Size screenSize;
|
Size screenSize;
|
||||||
BMFMapOptions mapOptions;
|
BMFMapOptions mapOptions;
|
||||||
BMFMapController myMapController;
|
BMFMapController myMapController;
|
||||||
@@ -32,9 +39,18 @@ class _BasicMapState extends State<BasicMap> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<AvailableMap> availableMaps;
|
||||||
|
|
||||||
|
void init() async {
|
||||||
|
// 获取用户选择的默认地图
|
||||||
|
availableMaps = await MapLauncher.installedMaps;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
init();
|
||||||
|
|
||||||
mapOptions = BMFMapOptions(
|
mapOptions = BMFMapOptions(
|
||||||
//center: BMFCoordinate(39.965, 116.404),//北京市
|
//center: BMFCoordinate(39.965, 116.404),//北京市
|
||||||
//30 116.395645038,39.9299857781 北京-北京市
|
//30 116.395645038,39.9299857781 北京-北京市
|
||||||
@@ -291,8 +307,17 @@ class _BasicMapState extends State<BasicMap> {
|
|||||||
.push(
|
.push(
|
||||||
PageRouteBuilder(
|
PageRouteBuilder(
|
||||||
opaque: false,
|
opaque: false,
|
||||||
pageBuilder: (context, animation, secondaryAnimation) =>
|
pageBuilder: (context, animation, secondaryAnimation) => dwInfoDialog(
|
||||||
dwInfoDialog(id: id, dwIndex: dwIndex, title: title, content: content),
|
id: id,
|
||||||
|
dwIndex: dwIndex,
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
parentContext: context,
|
||||||
|
destinationLatitude: double.parse(listCoordinate[1]),
|
||||||
|
destinationLongitude: double.parse(listCoordinate[0]),
|
||||||
|
destinationTitle: listDwinfoGetList2[dwIndex]["dwmc"],
|
||||||
|
availableMaps: availableMaps,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.then((value) async {
|
.then((value) async {
|
||||||
|
|||||||
@@ -1,21 +1,38 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:geolocator/geolocator.dart';
|
||||||
import 'package:hyzp_ybqx/components/dioFun.dart';
|
import 'package:hyzp_ybqx/components/dioFun.dart';
|
||||||
|
import 'package:map_launcher/map_launcher.dart';
|
||||||
|
|
||||||
//import 'package:hyzp_ybqx/widget/player_pro.dart';
|
//import 'package:hyzp_ybqx/widget/player_pro.dart';
|
||||||
import '../../../components/commonFun.dart';
|
import '../../../components/commonFun.dart';
|
||||||
|
import '../../../services/Storage.dart';
|
||||||
|
import 'maps_sheet.dart';
|
||||||
|
|
||||||
//确认对话框
|
//确认对话框
|
||||||
class dwInfoDialog extends Dialog {
|
class dwInfoDialog extends Dialog {
|
||||||
dwInfoDialog({@required this.id, this.title = "", @required this.dwIndex, this.content});
|
dwInfoDialog({
|
||||||
|
@required this.id,
|
||||||
|
this.title = "",
|
||||||
|
@required this.dwIndex,
|
||||||
|
this.content,
|
||||||
|
// 导航相关参数
|
||||||
|
this.parentContext,
|
||||||
|
this.destinationLatitude,
|
||||||
|
this.destinationLongitude,
|
||||||
|
this.destinationTitle,
|
||||||
|
this.availableMaps,
|
||||||
|
});
|
||||||
|
|
||||||
int dwIndex;
|
int dwIndex;
|
||||||
String id;
|
String id;
|
||||||
String title;
|
String title;
|
||||||
String content;
|
String content;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
BuildContext parentContext;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
getCurrentPosition();
|
||||||
Size mediaSize = MediaQuery.of(context).size;
|
Size mediaSize = MediaQuery.of(context).size;
|
||||||
return WillPopScope(
|
return WillPopScope(
|
||||||
child: Material(
|
child: Material(
|
||||||
@@ -90,9 +107,9 @@ class dwInfoDialog extends Dialog {
|
|||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
ret = true;
|
ret = true;
|
||||||
getingDwVideo = false;
|
getingDwVideo = false;
|
||||||
Navigator.pop(context, ret); //关闭弹框,返回sRet
|
navigationMap(context);
|
||||||
},
|
},
|
||||||
child: Text("确认"),
|
child: Text("导航"),
|
||||||
),
|
),
|
||||||
RaisedButton(
|
RaisedButton(
|
||||||
child: Text("取消"),
|
child: Text("取消"),
|
||||||
@@ -115,4 +132,102 @@ class dwInfoDialog extends Dialog {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导航相关代码
|
||||||
|
double destinationLatitude = 28.45382237207785;
|
||||||
|
double destinationLongitude = 104.7506958256658;
|
||||||
|
String destinationTitle = '珙县大坪上';
|
||||||
|
|
||||||
|
double originLatitude;
|
||||||
|
double originLongitude;
|
||||||
|
String originTitle = '我的位置';
|
||||||
|
|
||||||
|
List<Coords> waypoints = [
|
||||||
|
// Coords(37.7705112, -122.4108267),
|
||||||
|
// Coords(37.6988984, -122.4830961),
|
||||||
|
// Coords(37.7935754, -122.483654),
|
||||||
|
];
|
||||||
|
|
||||||
|
DirectionsMode directionsMode = DirectionsMode.driving;
|
||||||
|
|
||||||
|
List<AvailableMap> availableMaps;
|
||||||
|
|
||||||
|
// String defaultMapName = 'Amap';
|
||||||
|
String defaultMapName = g_defaultMapName;
|
||||||
|
AvailableMap defalutMap;
|
||||||
|
|
||||||
|
void getCurrentPosition() async {
|
||||||
|
print('getCurrentPosition begin');
|
||||||
|
|
||||||
|
// 是否保存默认地图
|
||||||
|
g_bSaveDefaultMap = await Storage.getBool('bSaveDefaultMap');
|
||||||
|
g_bSaveDefaultMap = (null == g_bSaveDefaultMap) ? false : g_bSaveDefaultMap; // 默认不保存
|
||||||
|
// 用户选择的默认地图名称
|
||||||
|
g_defaultMapName = await Storage.getString('defaultMapName');
|
||||||
|
g_defaultMapName = (null == g_defaultMapName) ? '' : g_defaultMapName; // 默认为空字符串
|
||||||
|
defaultMapName = g_defaultMapName;
|
||||||
|
|
||||||
|
// 获取用户选择的默认地图
|
||||||
|
// availableMaps = await MapLauncher.installedMaps; // 为避免延迟错乱,该变量由父组件传入
|
||||||
|
if (defaultMapName != null && defaultMapName.length > 0) {
|
||||||
|
for (var map in availableMaps) {
|
||||||
|
if (defaultMapName.toLowerCase() == map.mapName.toLowerCase()) {
|
||||||
|
defalutMap = map;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await Geolocator.getCurrentPosition().then((Position value) {
|
||||||
|
originLatitude = value.latitude;
|
||||||
|
originLongitude = value.longitude;
|
||||||
|
print('value = ${value.toString()}');
|
||||||
|
// value = Latitude: 28.796201, Longitude: 104.607751
|
||||||
|
print('getCurrentPosition end');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
navigationMap(BuildContext context) {
|
||||||
|
print('this.defalutMap = ${defalutMap}');
|
||||||
|
if (defalutMap != null) {
|
||||||
|
defalutMap.showDirections(
|
||||||
|
destination: Coords(
|
||||||
|
destinationLatitude,
|
||||||
|
destinationLongitude,
|
||||||
|
),
|
||||||
|
destinationTitle: destinationTitle,
|
||||||
|
origin: originLatitude == null || originLongitude == null
|
||||||
|
? null
|
||||||
|
: Coords(originLatitude, originLongitude),
|
||||||
|
originTitle: originTitle,
|
||||||
|
waypoints: waypoints,
|
||||||
|
directionsMode: directionsMode,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
MapsSheet.show(
|
||||||
|
context: parentContext,
|
||||||
|
onMapTap: (map) {
|
||||||
|
if (g_bSaveDefaultMap) {
|
||||||
|
g_defaultMapName = map.mapName;
|
||||||
|
Storage.setString('defaultMapName', g_defaultMapName);
|
||||||
|
}
|
||||||
|
|
||||||
|
map.showDirections(
|
||||||
|
destination: Coords(
|
||||||
|
destinationLatitude,
|
||||||
|
destinationLongitude,
|
||||||
|
),
|
||||||
|
destinationTitle: destinationTitle,
|
||||||
|
origin: originLatitude == null || originLongitude == null
|
||||||
|
? null
|
||||||
|
: Coords(originLatitude, originLongitude),
|
||||||
|
originTitle: originTitle,
|
||||||
|
waypoints: waypoints,
|
||||||
|
directionsMode: directionsMode,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Navigator.pop(context, ret); //关闭弹框,返回sRet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:map_launcher/map_launcher.dart';
|
||||||
|
|
||||||
|
class MapsSheet {
|
||||||
|
static show({
|
||||||
|
@required BuildContext context,
|
||||||
|
@required Function(AvailableMap map) onMapTap,
|
||||||
|
}) async {
|
||||||
|
final availableMaps = await MapLauncher.installedMaps;
|
||||||
|
|
||||||
|
showModalBottomSheet(
|
||||||
|
context: context,
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return SafeArea(
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
child: Wrap(
|
||||||
|
children: <Widget>[
|
||||||
|
for (var map in availableMaps)
|
||||||
|
ListTile(
|
||||||
|
onTap: () {
|
||||||
|
print('map.mapName = ${map.mapName}');
|
||||||
|
// map.mapName = Amap
|
||||||
|
Navigator.pop(context);
|
||||||
|
onMapTap(map);
|
||||||
|
},
|
||||||
|
title: Text(map.mapName),
|
||||||
|
leading: SvgPicture.asset(
|
||||||
|
map.icon,
|
||||||
|
height: 30.0,
|
||||||
|
width: 30.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ import 'package:keyboard_avoider/keyboard_avoider.dart';
|
|||||||
|
|
||||||
//
|
//
|
||||||
import '../../../components/commonFun.dart';
|
import '../../../components/commonFun.dart';
|
||||||
|
|
||||||
//import 'package:hyzp_ybqx/widget/player_pro_new.dart';
|
//import 'package:hyzp_ybqx/widget/player_pro_new.dart';
|
||||||
import '../../../components/dioFun.dart';
|
import '../../../components/dioFun.dart';
|
||||||
import '../../../components/doJSON.dart';
|
import '../../../components/doJSON.dart';
|
||||||
@@ -75,6 +76,8 @@ class _LoginPageState extends State<TsjjContentNew> with SingleTickerProviderSta
|
|||||||
try_setState(); //避免如下异常报错
|
try_setState(); //避免如下异常报错
|
||||||
});
|
});
|
||||||
|
|
||||||
|
print('official_seal = $official_seal');
|
||||||
|
|
||||||
_widthLeft = _screenWidth / 2;
|
_widthLeft = _screenWidth / 2;
|
||||||
getListFlields();
|
getListFlields();
|
||||||
|
|
||||||
@@ -123,7 +126,8 @@ class _LoginPageState extends State<TsjjContentNew> with SingleTickerProviderSta
|
|||||||
print('_mapTsjjGetTsStatus = $_mapTsjjGetTsStatus');
|
print('_mapTsjjGetTsStatus = $_mapTsjjGetTsStatus');
|
||||||
|
|
||||||
// 获取网络图片尺寸,getMediaUrl(_mapGetTsjjGetData['pic_url'])
|
// 获取网络图片尺寸,getMediaUrl(_mapGetTsjjGetData['pic_url'])
|
||||||
await flustars.WidgetUtil.getImageWH(url: getMediaUrl(_mapGetTsjjGetData['pic_url'])).then((rect) {
|
await flustars.WidgetUtil.getImageWH(url: getMediaUrl(_mapGetTsjjGetData['pic_url']))
|
||||||
|
.then((rect) {
|
||||||
if (null != rect) {
|
if (null != rect) {
|
||||||
_radioImage = rect.height / rect.width;
|
_radioImage = rect.height / rect.width;
|
||||||
print("rect = $rect,_radioImage = $_radioImage");
|
print("rect = $rect,_radioImage = $_radioImage");
|
||||||
@@ -915,8 +919,13 @@ class _LoginPageState extends State<TsjjContentNew> with SingleTickerProviderSta
|
|||||||
//color: Colors.black12,
|
//color: Colors.black12,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
//color: Colors.white,
|
//color: Colors.white,
|
||||||
|
// image: DecorationImage(
|
||||||
|
// image: AssetImage("assets/images/jkzx_stamp.png"), fit: BoxFit.contain),
|
||||||
|
// image: DecorationImage(
|
||||||
|
// image: AssetImage("assets/images/宜宾市长宁生态环境局.png"), fit: BoxFit.contain),
|
||||||
image: DecorationImage(
|
image: DecorationImage(
|
||||||
image: AssetImage("assets/images/jkzx_stamp.png"), fit: BoxFit.contain),
|
image: AssetImage("assets/images/" + official_seal), fit: BoxFit.contain),
|
||||||
|
|
||||||
),
|
),
|
||||||
//child:
|
//child:
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ 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/page5_userManager.dart';
|
||||||
import 'package:hyzp_ybqx/pages/tabs/page6_download.dart';
|
import 'package:hyzp_ybqx/pages/tabs/page6_download.dart';
|
||||||
import 'package:hyzp_ybqx/pages/tabs/page7_setRemind.dart';
|
import 'package:hyzp_ybqx/pages/tabs/page7_setRemind.dart';
|
||||||
|
import 'package:hyzp_ybqx/pages/tabs/page8_defaultMap.dart';
|
||||||
import 'package:hyzp_ybqx/services/EventBus.dart';
|
import 'package:hyzp_ybqx/services/EventBus.dart';
|
||||||
import 'package:hyzp_ybqx/widget/JdButton.dart';
|
import 'package:hyzp_ybqx/widget/JdButton.dart';
|
||||||
import 'package:package_info/package_info.dart';
|
import 'package:package_info/package_info.dart';
|
||||||
@@ -111,35 +112,35 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
|
|||||||
static onNullFun() {}
|
static onNullFun() {}
|
||||||
|
|
||||||
Widget _getListTile(
|
Widget _getListTile(
|
||||||
title, {
|
title, {
|
||||||
String leadPath = '',
|
String leadPath = '',
|
||||||
Color leadColor,
|
Color leadColor,
|
||||||
Color textColor,
|
Color textColor,
|
||||||
onTapFun = onNullFun,
|
onTapFun = onNullFun,
|
||||||
onLongPressFun = onNullFun,
|
onLongPressFun = onNullFun,
|
||||||
size = 16.0,
|
size = 16.0,
|
||||||
bool bBadge = false,
|
bool bBadge = false,
|
||||||
Widget trailWidget = const Icon(Icons.arrow_forward_ios),
|
Widget trailWidget = const Icon(Icons.arrow_forward_ios),
|
||||||
}) {
|
}) {
|
||||||
// print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false
|
// print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false
|
||||||
return Column(
|
return Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: bBadge
|
leading: bBadge
|
||||||
? Badge(
|
? Badge(
|
||||||
position: BadgePosition.topEnd(top: -7, end: -12),
|
position: BadgePosition.topEnd(top: -7, end: -12),
|
||||||
badgeContent: null,
|
badgeContent: null,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
leadPath,
|
leadPath,
|
||||||
height: ScreenUtil().setHeight(78),
|
height: ScreenUtil().setHeight(78),
|
||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: Image.asset(
|
: Image.asset(
|
||||||
leadPath,
|
leadPath,
|
||||||
height: ScreenUtil().setHeight(78),
|
height: ScreenUtil().setHeight(78),
|
||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
),
|
),
|
||||||
title: Text(title, style: TextStyle(fontSize: size, color: textColor)),
|
title: Text(title, style: TextStyle(fontSize: size, color: textColor)),
|
||||||
trailing: trailWidget,
|
trailing: trailWidget,
|
||||||
contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
|
contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
|
||||||
@@ -202,6 +203,10 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
|
|||||||
leadPath: 'assets/images/账户管理.png',
|
leadPath: 'assets/images/账户管理.png',
|
||||||
leadColor: _deepBlueColor,
|
leadColor: _deepBlueColor,
|
||||||
onTapFun: OnTap_user_manager),
|
onTapFun: OnTap_user_manager),
|
||||||
|
_getListTile('默认导航',
|
||||||
|
leadPath: 'assets/images/默认地图3.png',
|
||||||
|
leadColor: _deepBlueColor,
|
||||||
|
onTapFun: OnTap_DefaultMap),
|
||||||
//bNewVer:是否发现新版本
|
//bNewVer:是否发现新版本
|
||||||
_getListTile('版本更新',
|
_getListTile('版本更新',
|
||||||
leadPath: 'assets/images/版本更新.png',
|
leadPath: 'assets/images/版本更新.png',
|
||||||
@@ -213,9 +218,7 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
|
|||||||
leadColor: _deepBlueColor,
|
leadColor: _deepBlueColor,
|
||||||
onTapFun: OnTap_download),
|
onTapFun: OnTap_download),
|
||||||
_getListTile('提醒设置',
|
_getListTile('提醒设置',
|
||||||
leadPath: 'assets/images/语音提醒.png',
|
leadPath: 'assets/images/语音提醒.png', leadColor: _deepGreyColor, onTapFun: OnTap_Remind),
|
||||||
leadColor: _deepGreyColor,
|
|
||||||
onTapFun: OnTap_Remind),
|
|
||||||
_getListTile('关于',
|
_getListTile('关于',
|
||||||
leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout)
|
leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout)
|
||||||
|
|
||||||
@@ -511,6 +514,10 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
|
|||||||
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page5_userManager()));
|
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page5_userManager()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnTap_DefaultMap() async {
|
||||||
|
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page8_defaultMap()));
|
||||||
|
}
|
||||||
|
|
||||||
OnTap_download() {
|
OnTap_download() {
|
||||||
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page6_download()));
|
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page6_download()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,284 @@
|
|||||||
|
import 'package:badges/badges.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:hyzp_ybqx/pages/Login/FaceReg.dart';
|
||||||
|
import 'package:hyzp_ybqx/pages/Login/ModifyPassword.dart';
|
||||||
|
import 'package:hyzp_ybqx/services/Storage.dart';
|
||||||
|
|
||||||
|
import '../../components/commonFun.dart';
|
||||||
|
import '../../widget/JdButton.dart';
|
||||||
|
|
||||||
|
class page8_defaultMap extends StatefulWidget {
|
||||||
|
page8_defaultMap({Key key}) : super(key: key);
|
||||||
|
|
||||||
|
_LoginPageState createState() => _LoginPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LoginPageState extends State<page8_defaultMap> {
|
||||||
|
bool bSaveDefaultMap = false;
|
||||||
|
String defaultMapName = '';
|
||||||
|
|
||||||
|
dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void init() async {
|
||||||
|
// 从磁盘读取变量
|
||||||
|
// 是否保存默认地图
|
||||||
|
g_bSaveDefaultMap = await Storage.getBool('bSaveDefaultMap');
|
||||||
|
g_bSaveDefaultMap = (null == g_bSaveDefaultMap) ? false : g_bSaveDefaultMap; // 默认不保存
|
||||||
|
// 用户选择的默认地图名称
|
||||||
|
g_defaultMapName = await Storage.getString('defaultMapName');
|
||||||
|
g_defaultMapName = (null == g_defaultMapName) ? '' : g_defaultMapName; // 默认为空字符串
|
||||||
|
|
||||||
|
bSaveDefaultMap = g_bSaveDefaultMap;
|
||||||
|
// bSaveDefaultMap = false;
|
||||||
|
// defaultMapName = g_defaultMapName;
|
||||||
|
// defaultMapName = '高德地图';
|
||||||
|
// defaultMapName = getMapChsName('amap');
|
||||||
|
defaultMapName = getMapChsName(g_defaultMapName);
|
||||||
|
setState(() {});
|
||||||
|
}
|
||||||
|
|
||||||
|
////////
|
||||||
|
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 bSaveDefaultMap = $bSaveDefaultMap "); // _getListTile bSaveDefaultMap = false
|
||||||
|
return Column(
|
||||||
|
children: <Widget>[
|
||||||
|
ListTile(
|
||||||
|
leading: bBadge
|
||||||
|
? Badge(
|
||||||
|
position: BadgePosition.topEnd(top: -7, end: -12),
|
||||||
|
badgeContent: null,
|
||||||
|
child: Image.asset(
|
||||||
|
leadPath,
|
||||||
|
height: ScreenUtil().setHeight(78),
|
||||||
|
fit: BoxFit.fitHeight,
|
||||||
|
// color: leadColor, // 无效
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Image.asset(
|
||||||
|
leadPath,
|
||||||
|
height: ScreenUtil().setHeight(78),
|
||||||
|
fit: BoxFit.fitHeight,
|
||||||
|
),
|
||||||
|
title: Text(title, style: TextStyle(fontSize: size, color: textColor)),
|
||||||
|
trailing: trailWidget,
|
||||||
|
contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
|
||||||
|
enabled: true,
|
||||||
|
onTap: onTapFun,
|
||||||
|
onLongPress: onLongPressFun,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Widget> _listViewUser = [];
|
||||||
|
|
||||||
|
Color _greenColor = Color.fromRGBO(36, 206, 192, 1); //绿色
|
||||||
|
Color _deepBlueColor = Color.fromRGBO(79, 118, 230, 1); //深蓝
|
||||||
|
Color _deepGreyColor = Color.fromRGBO(116, 139, 161, 1); //深灰
|
||||||
|
Color _ligthBlueColor = Color.fromRGBO(80, 159, 245, 1); //亮蓝
|
||||||
|
|
||||||
|
OnTap_FaceReg() async {
|
||||||
|
Navigator.of(context).push(MaterialPageRoute(builder: (context) => FaceReg()));
|
||||||
|
}
|
||||||
|
|
||||||
|
OnTap_modify_password() {
|
||||||
|
Navigator.of(context).push(MaterialPageRoute(builder: (context) => ModifyPassword()));
|
||||||
|
}
|
||||||
|
|
||||||
|
OnTap_Remind() {
|
||||||
|
setState(() {
|
||||||
|
bSaveDefaultMap = !bSaveDefaultMap;
|
||||||
|
print("bSaveDefaultMap = $bSaveDefaultMap");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getTextField() {
|
||||||
|
return Container(
|
||||||
|
width: ScreenUtil().setWidth(400),
|
||||||
|
child: TextField(
|
||||||
|
readOnly: !bSaveDefaultMap,
|
||||||
|
focusNode: FocusNode(),
|
||||||
|
textAlignVertical: TextAlignVertical(y: 1.0),
|
||||||
|
controller: TextEditingController.fromValue(TextEditingValue(
|
||||||
|
text: defaultMapName.toString(),
|
||||||
|
// 保持光标在最后
|
||||||
|
selection: TextSelection.fromPosition(TextPosition(
|
||||||
|
affinity: TextAffinity.downstream, offset: defaultMapName.toString().length)))),
|
||||||
|
maxLines: 1,
|
||||||
|
keyboardType: TextInputType.text,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
//contentPadding: EdgeInsets.only(bottom: 16),
|
||||||
|
// hintText: widget.text,
|
||||||
|
// border: OutlineInputBorder(
|
||||||
|
// borderRadius: BorderRadius.circular(30), borderSide: BorderSide.none),
|
||||||
|
border: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
|
||||||
|
focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
|
||||||
|
enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
|
||||||
|
),
|
||||||
|
onChanged: (v) {
|
||||||
|
defaultMapName = v;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getText(String text) {
|
||||||
|
return Container(
|
||||||
|
child: Text(text,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
color: Colors.blueAccent,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
decoration: TextDecoration.underline,
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: PreferredSize(
|
||||||
|
preferredSize: Size.fromHeight(ScreenUtil().setHeight(173)), // 设置appBar高度
|
||||||
|
// 设置appBar高度
|
||||||
|
child: AppBar(
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
centerTitle: true,
|
||||||
|
titleSpacing: 0.0,
|
||||||
|
//设置title的左边距
|
||||||
|
flexibleSpace: Container(
|
||||||
|
//SizedBox(height: ScreenUtil().statusBarHeight), //显示顶部状态栏
|
||||||
|
// SizedBox(height: ScreenUtil().setHeight(10)), //显示顶部状态栏
|
||||||
|
padding: EdgeInsets.only(top: ScreenUtil().statusBarHeight), //留出顶部状态栏高度
|
||||||
|
child: Container(
|
||||||
|
//height: ScreenUtil().setHeight(173),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.centerLeft,
|
||||||
|
end: Alignment.centerRight,
|
||||||
|
colors: [
|
||||||
|
Color.fromRGBO(12, 186, 156, 1),
|
||||||
|
Color.fromRGBO(39, 127, 235, 1),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// gradient: LinearGradient(colors: [
|
||||||
|
// Color(0xFF0018EB),
|
||||||
|
// Color(0xFF01C1D9),
|
||||||
|
// ], begin: Alignment.bottomCenter, end: Alignment.topCenter),
|
||||||
|
// ),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
title: Padding(
|
||||||
|
padding: EdgeInsets.only(left: 0, right: 0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
getIconAndTextButton(
|
||||||
|
iconColor: Colors.white,
|
||||||
|
iconData: Icons.chevron_left_outlined,
|
||||||
|
onPress: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Text("默认导航设置",
|
||||||
|
style: TextStyle(color: Colors.white, fontSize: 20),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
overflow: TextOverflow.ellipsis),
|
||||||
|
),
|
||||||
|
SizedBox(width: 50),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: Container(
|
||||||
|
padding: EdgeInsets.only(top: 30, bottom: 20, left: 20, right: 20),
|
||||||
|
child: ListView(
|
||||||
|
children: [
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(top: 30),
|
||||||
|
height: ScreenUtil().setWidth(160),
|
||||||
|
width: ScreenUtil().setWidth(160),
|
||||||
|
//child: Image.asset('assets/images/user.png', fit: BoxFit.cover),
|
||||||
|
child: Image.asset('assets/images/ybsthbj.png', fit: BoxFit.fitHeight),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(height: 50),
|
||||||
|
_getListTile('保存默认导航地图',
|
||||||
|
leadPath: 'assets/images/地图选中.png',
|
||||||
|
leadColor: _deepGreyColor,
|
||||||
|
// textColor: bSaveDefaultMap ? Colors.blue : null,
|
||||||
|
onTapFun: OnTap_Remind,
|
||||||
|
trailWidget: bSaveDefaultMap
|
||||||
|
? Icon(Icons.check_box, color: Colors.blue)
|
||||||
|
: Icon(Icons.check_box_outline_blank, color: Colors.blueAccent)),
|
||||||
|
_getListTile('已选默认导航地图:',
|
||||||
|
leadPath: 'assets/images/用户选择.png',
|
||||||
|
leadColor: _deepBlueColor,
|
||||||
|
trailWidget: getText(defaultMapName)),
|
||||||
|
SizedBox(height: 60),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
JdButton(
|
||||||
|
height: 128,
|
||||||
|
width: 282,
|
||||||
|
//height: 126,
|
||||||
|
text: "确认",
|
||||||
|
color: Colors.blueAccent,
|
||||||
|
onTop: () async {
|
||||||
|
g_bSaveDefaultMap = bSaveDefaultMap;
|
||||||
|
await Storage.setBool('bSaveDefaultMap', g_bSaveDefaultMap);
|
||||||
|
if (!g_bSaveDefaultMap) {
|
||||||
|
await Storage.setString('defaultMapName', '');
|
||||||
|
}
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
JdButton(
|
||||||
|
height: 128,
|
||||||
|
width: 282,
|
||||||
|
//height: 126,
|
||||||
|
text: "取消",
|
||||||
|
color: Colors.blueAccent,
|
||||||
|
onTop: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -60,6 +60,7 @@ class _SuperPlayerPageState extends State<SuperPlayerPage>
|
|||||||
Playing = false;
|
Playing = false;
|
||||||
// 云台控制代码:1:停止动作、3:启动雨刷、11:焦距变大、12:焦距变小
|
// 云台控制代码:1:停止动作、3:启动雨刷、11:焦距变大、12:焦距变小
|
||||||
setSphericalCameraDio(id: widget.id, dwip: widget.dwip, cmdCode: 1);
|
setSphericalCameraDio(id: widget.id, dwip: widget.dwip, cmdCode: 1);
|
||||||
|
_playerController.release(); // 必须显示释放视频播放资源,否则即使退出视频播放页面后台还在获取视频流
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,8 +75,7 @@ class _SuperPlayerPageState extends State<SuperPlayerPage>
|
|||||||
// });
|
// });
|
||||||
// init();
|
// init();
|
||||||
|
|
||||||
WidgetsBinding.instance.addObserver(this);
|
WidgetsBinding.instance.addObserver(this);
|
||||||
|
|
||||||
|
|
||||||
_playerController.setOption(FijkOption.hostCategory, "enable-snapshot", 1);
|
_playerController.setOption(FijkOption.hostCategory, "enable-snapshot", 1);
|
||||||
_playerController.setOption(FijkOption.playerCategory, "mediacodec-all-videos", 1);
|
_playerController.setOption(FijkOption.playerCategory, "mediacodec-all-videos", 1);
|
||||||
@@ -202,12 +202,12 @@ class _SuperPlayerPageState extends State<SuperPlayerPage>
|
|||||||
playerRegionProvide = Provider.of<PlayerRegionProvide>(context);
|
playerRegionProvide = Provider.of<PlayerRegionProvide>(context);
|
||||||
playerRatioProvide = Provider.of<PlayerRatioProvide>(context);
|
playerRatioProvide = Provider.of<PlayerRatioProvide>(context);
|
||||||
|
|
||||||
// List<Widget> listData = getDataListControl2();
|
// // List<Widget> listData = getDataListControl2();
|
||||||
double btnHeight1 = 70; //第一按钮行高度
|
// double btnHeight1 = 70; //第一按钮行高度
|
||||||
double btnHeight2 = 160; //第二按钮行高度
|
// double btnHeight2 = 160; //第二按钮行高度
|
||||||
int btnCount = 4; //每行按钮个数
|
// int btnCount = 4; //每行按钮个数
|
||||||
// int btnCount3 = listData.length; //每行按钮个数
|
// // int btnCount3 = listData.length; //每行按钮个数
|
||||||
var mediaSize = MediaQuery.of(context).size;
|
// var mediaSize = MediaQuery.of(context).size;
|
||||||
|
|
||||||
// widget.id:播放点位视频的点位编号,-2 表示播放违章视频
|
// widget.id:播放点位视频的点位编号,-2 表示播放违章视频
|
||||||
double btn_left = -2 == widget.id ? 347 : 70; //第一按钮行高度
|
double btn_left = -2 == widget.id ? 347 : 70; //第一按钮行高度
|
||||||
|
|||||||
@@ -377,6 +377,13 @@ packages:
|
|||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "0.0.3"
|
version: "0.0.3"
|
||||||
|
flutter_svg:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_svg
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.19.1"
|
||||||
flutter_swiper:
|
flutter_swiper:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -408,6 +415,27 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.1"
|
version: "4.0.1"
|
||||||
|
geolocator:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: geolocator
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "6.2.1"
|
||||||
|
geolocator_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: geolocator_platform_interface
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.9"
|
||||||
|
geolocator_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: geolocator_web
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
get_it:
|
get_it:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -485,6 +513,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
|
map_launcher:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: map_launcher
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.3+1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -76,7 +76,11 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
#version: 1.5.2+20220531
|
#version: 1.5.2+20220531
|
||||||
#version: 1.5.3+20220620
|
#version: 1.5.3+20220620
|
||||||
#version: 1.5.4+20220827
|
#version: 1.5.4+20220827
|
||||||
version: 1.6.1+20221111
|
#version: 1.6.1+20221111
|
||||||
|
#version: 1.6.2+20231229
|
||||||
|
#version: 1.6.3+20231229
|
||||||
|
#version: 1.6.4+20250521
|
||||||
|
version: 1.6.5+20250527
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.7.0 <3.0.0"
|
||||||
@@ -199,7 +203,7 @@ dependencies:
|
|||||||
|
|
||||||
flutter_echarts: ^1.5.0
|
flutter_echarts: ^1.5.0
|
||||||
flutter_superplayer:
|
flutter_superplayer:
|
||||||
path: .\lib\my_flutter_superplayer
|
path: ./lib/my_flutter_superplayer
|
||||||
|
|
||||||
# 二维码生成 https://pub.dev/packages/qr_flutter
|
# 二维码生成 https://pub.dev/packages/qr_flutter
|
||||||
qr_flutter: ^3.2.0
|
qr_flutter: ^3.2.0
|
||||||
@@ -210,6 +214,11 @@ dependencies:
|
|||||||
# 添加水印插件
|
# 添加水印插件
|
||||||
disable_screenshots: ^0.1.0
|
disable_screenshots: ^0.1.0
|
||||||
|
|
||||||
|
# 导航相关插件
|
||||||
|
map_launcher: ^1.1.3+1
|
||||||
|
flutter_svg: ^0.19.1
|
||||||
|
geolocator: ^6.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|||||||