diff --git a/assets/images/时间间隔.png b/assets/images/时间间隔.png new file mode 100644 index 0000000..eceb8f1 Binary files /dev/null and b/assets/images/时间间隔.png differ diff --git a/lib/pages/tabs/Tabs.dart b/lib/pages/tabs/Tabs.dart index ead7e70..1e421ee 100644 --- a/lib/pages/tabs/Tabs.dart +++ b/lib/pages/tabs/Tabs.dart @@ -121,8 +121,11 @@ class _TabsState extends State { @override void dispose() { - // ///取消计时器 - // g_remindTimer.cancel(); + // 取消定时任务 + if (null != g_remindTimer) { + g_remindTimer.cancel(); //取消计时器 + } + super.dispose(); } diff --git a/lib/pages/tabs/page4_myMsics_new.dart b/lib/pages/tabs/page4_myMsics_new.dart index 757616a..9a7d6e5 100644 --- a/lib/pages/tabs/page4_myMsics_new.dart +++ b/lib/pages/tabs/page4_myMsics_new.dart @@ -15,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/pages/tabs/page7_setRemind.dart'; import 'package:hyzp_ybqx/services/EventBus.dart'; import 'package:hyzp_ybqx/widget/JdButton.dart'; import 'package:package_info/package_info.dart'; @@ -211,14 +212,10 @@ class _Page4_MyMsicsNewState extends State leadPath: 'assets/images/download.png', leadColor: _deepBlueColor, onTapFun: OnTap_download), - _getListTile('待审提醒', + _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)), + onTapFun: OnTap_Remind), _getListTile('关于', leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout) @@ -437,15 +434,7 @@ 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(); - }); + Navigator.of(context).push(MaterialPageRoute(builder: (context) => page7_setRemind())); } OnTap_MyAbout() { diff --git a/lib/pages/tabs/page7_setRemind.dart b/lib/pages/tabs/page7_setRemind.dart new file mode 100644 index 0000000..3552d9b --- /dev/null +++ b/lib/pages/tabs/page7_setRemind.dart @@ -0,0 +1,278 @@ +import 'dart:io'; + +import 'package:audioplayers/audio_cache.dart'; +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/EventBus.dart'; +import 'package:hyzp_ybqx/services/Storage.dart'; + +import '../../components/commonFun.dart'; +import '../../widget/JdButton.dart'; + +class page7_setRemind extends StatefulWidget { + page7_setRemind({Key key}) : super(key: key); + + _LoginPageState createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + dispose() { + super.dispose(); + } + + @override + void initState() { + super.initState(); + + getListView(); + + //监听 g_bVoiceRemind 更新事件 + eventBus.on().listen((event) async { + print(event.str + ", g_bVoiceRemind = $g_bVoiceRemind"); + setState(() { + getListView(); + }); + }); + } + + //////// + static onNullFun() {} + + Widget _getListTile( + title, { + String leadPath = '', + Color leadColor, + Color textColor, + onTapFun = onNullFun, + onLongPressFun = onNullFun, + size = 16.0, + bool bBadge = false, + Widget trailWidget = const Icon(Icons.arrow_forward_ios), + }) { + // print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false + return Column( + children: [ + 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 _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(() { + g_bVoiceRemind = !g_bVoiceRemind; + print("bVoiceRemind = $g_bVoiceRemind"); + Storage.setBool('bVoiceRemind', g_bVoiceRemind); + if (g_bVoiceRemind) { + print("播放语音提醒"); + AudioCache().play(File('audio/语音提醒.mp3').path); //语音提醒 + } + getListView(); + }); + } + + getListView() { + _listViewUser.clear(); + _listViewUser = [ + 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: 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, + trailWidget: getTextField()), + SizedBox(height: 60), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + JdButton( + height: 128, + width: 282, + //height: 126, + text: "确认", + color: Colors.blueAccent, + onTop: () { + if (g_bVoiceRemind) { + g_remindGap = _gap; + print("g_remindGap = $g_remindGap"); + Storage.setInt('nRemindGap', g_remindGap); + setRemindTimer(); + } + Navigator.pop(context); + }, + ), + JdButton( + height: 128, + width: 282, + //height: 126, + text: "取消", + color: Colors.blueAccent, + onTop: () { + Navigator.pop(context); + }, + ) + ], + ), + ]; + } + + int _gap = g_remindGap; + + Widget getTextField() { + return Container( + width: ScreenUtil().setWidth(150), + child: TextField( + readOnly: !g_bVoiceRemind, + focusNode: FocusNode(), + textAlignVertical: TextAlignVertical(y: 1.0), + controller: TextEditingController.fromValue(TextEditingValue( + text: _gap.toString(), + // 保持光标在最后 + selection: TextSelection.fromPosition( + TextPosition(affinity: TextAffinity.downstream, offset: _gap.toString().length)))), + maxLines: 1, + keyboardType: TextInputType.number, + 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) { + _gap = int.parse(v); + }, + ), + ); + } + + //////// + + @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: _listViewUser, + ), + ), + ); + } +}