hyzp_ybqx-Commit121:已实现定时提醒,默认提醒间隔为60S,已经实现用户设置定时间隔。现在只能前台提醒,后台提醒后续尽量实现
parent
0e3e9e4fdf
commit
35eac9b0a2
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
@ -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<page7_setRemind> {
|
||||
dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getListView();
|
||||
|
||||
//监听 g_bVoiceRemind 更新事件
|
||||
eventBus.on<VoiceRemindUpdate>().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: <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(() {
|
||||
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,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue