diff --git a/assets/audio/语音提醒.mp3 b/assets/audio/语音提醒.mp3 new file mode 100644 index 0000000..89a483e Binary files /dev/null and b/assets/audio/语音提醒.mp3 differ diff --git a/assets/images/语音提醒.png b/assets/images/语音提醒.png new file mode 100644 index 0000000..ab039d6 Binary files /dev/null and b/assets/images/语音提醒.png differ diff --git a/lib/components/commonFun.dart b/lib/components/commonFun.dart index b383251..4a92ebc 100644 --- a/lib/components/commonFun.dart +++ b/lib/components/commonFun.dart @@ -71,6 +71,7 @@ const serviceUrl_ybqx_media = 'http://125.64.218.67:9906/'; // 2、新增sip参数,0表示市级平台,1表示区县平台。之前是通过不同端口来分别访问市级和区县的,因缩减了我们的端口数,现在统一使用1个端口,通过sip参数来区分市级和区县 const String setSphericalCameraUrl = 'http://125.64.218.67:9903/'; //新版的 const int g_sip = 1; // 新增sip参数,0表示市级平台,1表示区县平台。 +bool g_bVoiceRemind = false; // 用户设置是否开启语音提醒 // { // "ret": 200, diff --git a/lib/components/dioFun.dart b/lib/components/dioFun.dart index 039d731..789ec9e 100644 --- a/lib/components/dioFun.dart +++ b/lib/components/dioFun.dart @@ -955,6 +955,45 @@ Future getZpjlData(int id) async { return _mapZpjlGetData; } +// 获取待审核黑烟车记录 +Future getReviewedList() async { + // 获取违章信息分页列表数据 + // static const String getWzxxGetListUrl = serviceUrl_ybqx + '?s=App.Car_Hyc.GetList'; + var api = ServicePath.getWzxxGetListUrl; + print(api); + //http://125.64.218.67:9904/docs.php?service=App.Car_Yjxx.Get&detail=1&type=fold + + try { + print('开始处理网络请求...'); + Response response; + Dio dio = Dio(); + + String random = RandomBit(6); //flutter (dart)生成N位随机数 + response = await dio.post(api, data: { + "sign": GenerateMd5(APPkey + random), + "random": random, + "workflow": 1, // workflow 整型 可选 最小:1 审核状态:1=>待审 | 2=>已初审 | 999=>已复审 + "perpage": 100, // perpage 整型 可选 10 最小:1;最大:100 分页数量 + }); + print('response = ${response.toString()}'); + //I/flutter ( 5232): {"ret":200,"data":{"items":[],"total":0,"page":1,"perpage":10},"msg":""} + if (response.statusCode == 200) { + Map _mapRet = await getMapFromJson(response.data); + listReviewed = _mapRet['data']["items"]; + print('获取待审核黑烟车记录的网络请求过程正常完成'); + } else { + throw Exception('后端接口出现异常,请检测代码和服务器情况.........'); + } + } catch (e) { + print('网络请求过程异常e:${e}'); + Fluttertoast.showToast( + msg: 'ERROR:======>${e}', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.CENTER, + ); + } +} + ///////////////////////////////////////////////////////////////////// //处理审核信息数据 diff --git a/lib/components/hyxx_data_handle.dart b/lib/components/hyxx_data_handle.dart index 439944f..9c36ac3 100644 --- a/lib/components/hyxx_data_handle.dart +++ b/lib/components/hyxx_data_handle.dart @@ -447,6 +447,9 @@ List listGetTsjj = []; //获取指定id的抓拍记录列表存入listGetZpjl List listGetZpjl = []; +//获取待审核黑烟车记录 +List listReviewed = []; + //workflow 整型 审核状态: 1=>待审 | 2=>已初审 | 999=>已复审 | 1000=>非黑烟车 Map mapAuditStatus = { 1: "待审", diff --git a/lib/main.dart b/lib/main.dart index 213b04c..7f79f2b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,8 @@ import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' show BMFMapSDK, BMF_C import 'package:flutter_screenutil/screenutil_init.dart'; import 'package:hyzp_ybqx/pages/Login/LoginTabs2.dart'; import 'package:hyzp_ybqx/pages/MyMsics/05_updated/MyUpdatedNew.dart'; +import 'package:hyzp_ybqx/services/EventBus.dart'; +import 'package:hyzp_ybqx/services/Storage.dart'; import 'package:package_info/package_info.dart'; // 引入provider import 'package:provider/provider.dart'; @@ -111,6 +113,13 @@ class _MyAppState extends State { BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL); } }); + + // 从磁盘读取变量 + g_bVoiceRemind = await Storage.getBool('bVoiceRemind'); + // g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; // 默认关闭 + g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; // 默认开启 + // print('g_bVoiceRemind = $g_bVoiceRemind'); + eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新')); } //@override diff --git a/lib/pages/tabs/Tabs.dart b/lib/pages/tabs/Tabs.dart index 514427e..8605253 100644 --- a/lib/pages/tabs/Tabs.dart +++ b/lib/pages/tabs/Tabs.dart @@ -1,7 +1,11 @@ +import 'dart:io'; + import 'package:badges/badges.dart'; import 'package:disable_screenshots/disable_screenshots.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:hyzp_ybqx/components/dioFun.dart'; +import 'package:hyzp_ybqx/components/hyxx_data_handle.dart'; import 'package:hyzp_ybqx/pages/tabs/page4_myMsics_new.dart'; //import '../../widget/player_pro.dart'; @@ -10,6 +14,7 @@ import '../../components/commonFun.dart'; import '../../services/ServiceLocator.dart'; import '../../services/Storage.dart'; import 'page1_work.dart'; +import 'package:audioplayers/audio_cache.dart'; class Tabs extends StatefulWidget { Tabs({Key key, this.arguments = 0}) : super(key: key); @@ -70,6 +75,28 @@ class _TabsState extends State { bPreLoading = false; bLoginVerify = false; //处理延时登录,判断用户名登录是否验证通过 }); + + init(); + } + + init() async { + // // 从磁盘读取变量 + // g_bVoiceRemind = await Storage.getBool('bVoiceRemind'); + // g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; + // // print('g_bVoiceRemind = $g_bVoiceRemind'); + // eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新')); + + // 获取待审核黑烟车记录 + listReviewed.clear(); + await getReviewedList(); + print("listReviewed = $listReviewed"); + if (g_bVoiceRemind && listReviewed.length > 0) { + // if (g_bVoiceRemind) { + // import 'dart:io'; + // import 'package:audioplayers/audio_cache.dart'; + // print("播放:语音提醒.mp3"); + AudioCache().play(File('audio/语音提醒.mp3').path); //语音提醒 + } } double _activeIconWidth = 68; diff --git a/lib/pages/tabs/page4_myMsics_new.dart b/lib/pages/tabs/page4_myMsics_new.dart index 0b5585b..ff63728 100644 --- a/lib/pages/tabs/page4_myMsics_new.dart +++ b/lib/pages/tabs/page4_myMsics_new.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:audioplayers/audio_cache.dart'; import 'package:badges/badges.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -14,6 +15,7 @@ import 'package:hyzp_ybqx/pages/Works/DWDT/dwInfo_data.dart'; import 'package:hyzp_ybqx/pages/Works/TJXX/tj_data.dart'; import 'package:hyzp_ybqx/pages/tabs/page5_userManager.dart'; import 'package:hyzp_ybqx/pages/tabs/page6_download.dart'; +import 'package:hyzp_ybqx/services/EventBus.dart'; import 'package:hyzp_ybqx/widget/JdButton.dart'; import 'package:package_info/package_info.dart'; import 'package:path_provider/path_provider.dart'; @@ -82,6 +84,14 @@ class _Page4_MyMsicsNewState extends State getListView(); + //监听 g_bVoiceRemind 更新事件 + eventBus.on().listen((event) async { + print(event.str + ", g_bVoiceRemind = $g_bVoiceRemind"); + setState(() { + getListView(); + }); + }); + super.initState(); } @@ -99,33 +109,38 @@ class _Page4_MyMsicsNewState extends State //自定义方法 static onNullFun() {} - Widget _getListTile(title, - {String leadPath = '', - Color leadColor, - onTapFun = onNullFun, - onLongPressFun = onNullFun, - size = 16.0, - bool bBadge = false}) { + Widget _getListTile( + title, { + String leadPath = '', + Color leadColor, + Color textColor, + onTapFun = onNullFun, + onLongPressFun = onNullFun, + size = 16.0, + bool bBadge = false, + Widget trailWidget = const Icon(Icons.arrow_forward_ios), + }) { + // print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false return Column( children: [ ListTile( leading: bBadge ? Badge( - position: BadgePosition.topEnd(top: -7, end: -12), - badgeContent: null, - child: Image.asset( - leadPath, - height: ScreenUtil().setHeight(78), - fit: BoxFit.fitHeight, - ), - ) + position: BadgePosition.topEnd(top: -7, end: -12), + badgeContent: null, + child: Image.asset( + leadPath, + height: ScreenUtil().setHeight(78), + fit: BoxFit.fitHeight, + ), + ) : Image.asset( - leadPath, - height: ScreenUtil().setHeight(78), - fit: BoxFit.fitHeight, - ), - title: new Text(title, style: TextStyle(fontSize: size)), - trailing: new Icon(Icons.arrow_forward_ios), + 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, @@ -197,6 +212,14 @@ class _Page4_MyMsicsNewState extends State leadColor: _deepBlueColor, onTapFun: OnTap_download, bBadge: bNewVer), + _getListTile('待审提醒', + leadPath: 'assets/images/语音提醒.png', + leadColor: _deepGreyColor, + textColor: g_bVoiceRemind ? Colors.blue : null, + onTapFun: OnTap_Remind, + trailWidget: g_bVoiceRemind + ? Icon(Icons.check_box, color: Colors.blue) + : Icon(Icons.check_box_outline_blank, color: Colors.blueAccent)), _getListTile('关于', leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout) @@ -414,6 +437,18 @@ class _Page4_MyMsicsNewState extends State ); } + OnTap_Remind() { + setState(() { + g_bVoiceRemind = !g_bVoiceRemind; + print("bVoiceRemind = $g_bVoiceRemind"); + Storage.setBool('bVoiceRemind', g_bVoiceRemind); + if (g_bVoiceRemind) { + AudioCache().play(File('audio/语音提醒.mp3').path); //语音提醒 + } + getListView(); + }); + } + OnTap_MyAbout() { PackageInfo.fromPlatform().then((PackageInfo packageInfo) { String appName = packageInfo.appName; diff --git a/lib/services/EventBus.dart b/lib/services/EventBus.dart index 67192b9..9a8a058 100644 --- a/lib/services/EventBus.dart +++ b/lib/services/EventBus.dart @@ -4,6 +4,15 @@ import 'package:event_bus/event_bus.dart'; EventBus eventBus = EventBus(); +//监听 g_bVoiceRemind 更新事件 +class VoiceRemindUpdate { + String str; + + VoiceRemindUpdate(String _str) { + this.str = _str; + } +} + //监听统计数据改变事件 class StatisDataUpdate { String str; diff --git a/pubspec.yaml b/pubspec.yaml index 3361a6a..456c1a9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -62,7 +62,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev #version: 1.4.19+20220303 #version: 1.4.20+20220306 #version: 1.4.21+20220319 -version: 1.4.22+20220320 +#version: 1.4.22+20220320 +version: 1.4.23+20220405 environment: sdk: ">=2.7.0 <3.0.0"