Commit 9be58ad46a4f102a7fc0836745e4cbf864e2813c

Authored by wdn127929
1 parent 4d6776af

消息中心调整provider

No preview for this file type
... ... @@ -26,6 +26,8 @@ import 'package:one_key/provider/tools.dart';
import 'package:one_key/provider/update_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/misc.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
... ... @@ -34,6 +36,7 @@ import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart';
import 'package:flutter_app_badger/flutter_app_badger.dart';
import 'package:one_key/models/message.dart';
class HomePage extends StatefulWidget {
final int initialIndex; //初始tab
... ... @@ -98,7 +101,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
updateModel.checkUpdate(context, showToast: false);
});
timer = Timer.periodic(Duration(minutes: 3), (_) {
getUntreatedMessage();
_getAllUnMessages();
});
});
}
... ... @@ -123,9 +126,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
NavigatorUtil.goNotebookDetailPage(context, notifyParam['rid'],
mid: notifyParam['mid'], fromNotify: true);
break;
case "1":
NavigatorUtil.goHasOrderFoodPage(context,
rid: notifyParam["rid"], fromNotify: true);
// bus.emit("remove_untreated_message_order", notifyParam["rid"]);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": notifyParam['mid'],
"status": "is_read"
};
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
await messageDialogModel.setMessageStatus(context, params);
// bus.emit("refresh_untreated_num"); //刷新未读消息数目
break;
}
} else {
getUntreatedMessage();
_getAllUnMessages();
}
}
... ... @@ -134,7 +153,6 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
/// 开启DEBUG
XgFlutterPlugin().setEnableDebug(false);
/// 添加回调事件
XgFlutterPlugin().addEventHandler(
onRegisteredDeviceToken: (String msg) async {
... ... @@ -266,19 +284,20 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
userModel.userTokenInit(context, params);
}
// 消息类型ID 1/2/10 提前点餐/新订单(预定)消息/在线预订
//获取未处理在线预订消息
getUntreatedMessage() {
getUntreatedMessage(String typeId, VoidCallback callback) {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": "10", //10 在线预订
"type_id": typeId,
"status": "0", //未处理
"offset": "0",
"limit": "100",
};
MessageDialogModel messageModel =
Provider.of<MessageDialogModel>(context, listen: false);
messageModel.getUntreatedMsg(context, params);
messageModel.getUntreatedMsg(context, params, callback);
}
@override
... ... @@ -288,7 +307,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
switch (state) {
case AppLifecycleState.resumed: //应用前台可见
_clearBadge(() {
getUntreatedMessage();
_getAllUnMessages();
});
break;
... ... @@ -307,6 +326,33 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
}
}
///获取全部未读消息
///
_getAllUnMessages() {
getUntreatedMessage('1', () {
getUntreatedMessage('10', () {
MessageDialogModel messageModel =
Provider.of<MessageDialogModel>(context, listen: false);
if (messageModel.messages.isNotEmpty) {
//底部弹出布局
if (!messageModel.showMessageDialog) {
DialogUtil.showMessageDialog(context);
} else {
messageModel.notifyListeners();
}
//播放声音
if (messageModel.messages.length > 1) {
messageModel.play("-1");
} else {
for (Message message in messageModel.messages) {
messageModel.play(message.message_type);
}
}
}
});
});
}
// 系统窗口相关改变回调
void didChangeMetrics() {
super.didChangeMetrics();
... ...
... ... @@ -7,6 +7,7 @@ import 'package:one_key/pages/home/home_page.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/h_empty_view.dart';
... ... @@ -16,126 +17,176 @@ import 'package:provider/provider.dart';
import '../../app.dart';
class MessageDialogItem extends StatelessWidget {
final Message message;
final bool isTreated;
final VoidCallback callback;
MessageDialogItem(this.message,{this.isTreated=false,this.callback});
MessageDialogItem(this.message, {this.isTreated = false, this.callback});
@override
Widget build(BuildContext context) {
// TODO: implement build
Color textColor=isTreated?MyColours.color_999999:MyColours.color_353535;
MessageDialogModel messageDialogModel=Provider.of<MessageDialogModel>(context,listen: false);
String title = ''; //大标题
String subTitleFir = ''; //第一行标题
String subTitleSec = ''; //第二行标题
String subTitleThr = ''; //第三行标题
if (message.message_type == "10") {
title = "在线预订";
subTitleFir = '包间需求';
subTitleSec = '就餐时间';
subTitleThr = '预订人';
} else if (message.message_type == "11") {
title = "取消预订";
} else if (message.message_type == "1") {
title = "提前点餐";
subTitleFir = '桌位信息';
subTitleSec = '就餐时间';
subTitleThr = '预订人';
}
Color textColor =
isTreated ? MyColours.color_999999 : MyColours.color_353535;
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
return GestureDetector(
onTap: (){
if(isTreated){
NavigatorUtil.goNotebookDetailPage(context,message.rid.toString());
}
},
child: Stack(
children: <Widget>[
Container(
height: ScreenUtil().setWidth(290),
margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)),
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(12),
ScreenUtil().setWidth(45),
ScreenUtil().setWidth(21),
ScreenUtil().setWidth(43)),
decoration: BoxDecoration(
color: MyColours.color_fefefe,
borderRadius:
BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8)))),
child:Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
message.message_type=="10"?"在线预订":"取消预订",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
Spacer(),
Text(
message.cdateStr,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
),
],
),
VEmptyView(20),
message.message_type=="11"?
Text(
"${message.ddateStr}的${message.rnameStr}取消了预订",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
):
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"包间需求:${message.room_demand}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(10),
Text(
"就餐时间:${message.ddateStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(10),
Text(
"预订人:${message.rnameStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
],
)
],
),
),
Positioned(
right: ScreenUtil().setWidth(60),
bottom: ScreenUtil().setWidth(55),
child:Offstage(
offstage: isTreated?true:false,
child: CommonButton(
width: 160,
height: 48,
fontSize: 28,
content: message.message_type=="10"?"立即处理":"立即查看",
state: 1,
onPress: () {
messageDialogModel.removeMessage(message.id);
if(message.message_type=="10"){
NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id,replace: messageDialogModel.messages.isEmpty?true:false);
}else{
NavigatorUtil.goNotebookDetailPage(context,message.rid.toString(),replace: messageDialogModel.messages.isEmpty?true:false);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": message.id,
"status": "is_handle"
};
messageDialogModel.setMessageStatus(context,params);
}
},
onTap: () {
if (isTreated) {
NavigatorUtil.goNotebookDetailPage(context, message.rid.toString());
}
},
child: Stack(
children: <Widget>[
Container(
height: ScreenUtil().setWidth(290),
margin: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(39),
vertical: ScreenUtil().setWidth(12)),
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(12),
ScreenUtil().setWidth(45),
ScreenUtil().setWidth(21),
ScreenUtil().setWidth(43)),
decoration: BoxDecoration(
color: MyColours.color_fefefe,
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(8)))),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
title,
style: TextStyle(
color: textColor, fontSize: ScreenUtil().setSp(28)),
),
Spacer(),
Text(
message.cdateStr,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
),
],
),
VEmptyView(20),
message.message_type == "11"
? Text(
"${message.ddateStr}的${message.rnameStr}取消了预订",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"${subTitleFir}:${message.room_demand}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(10),
Text(
"${subTitleSec}:${message.ddateStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(10),
Text(
"${subTitleThr}:${message.rnameStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
],
)
],
),
),
)
],
)
);
Positioned(
right: ScreenUtil().setWidth(60),
bottom: ScreenUtil().setWidth(55),
child: Offstage(
offstage: isTreated ? true : false,
child: CommonButton(
width: 160,
height: 48,
fontSize: 28,
content: message.message_type == "10" ? "立即处理" : "立即查看",
state: 1,
onPress: () async {
messageDialogModel.removeMessage(message.id);
if (message.message_type == "10") {
NavigatorUtil.goHandleOnlinePage(
context, message.rid.toString(), message.id,
replace: messageDialogModel.messages.isEmpty
? true
: false);
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString(),
replace: messageDialogModel.messages.isEmpty
? true
: false);
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "1") {
//提前点餐
NavigatorUtil.goHasOrderFoodPage(context,
rid: message.rid,
replace: messageDialogModel.messages.isEmpty
? true
: false);
bus.emit("remove_untreated_message_order", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": "is_read"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
}
},
),
),
)
],
));
}
}
... ...
... ... @@ -31,18 +31,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
int selectedIndex = 0;
int offset=0;
int offset = 0;
MessageModel messageModel;
UserModel userModel;
MessageDialogModel messageDialogModel;
@override
void initState() {
// TODO: implement initState
super.initState();
//移除在线预订消息
bus.on("remove_untreated_message", (args) {
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
messageModel.removeUntreatedMessageByMid(args.toString());
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
messageDialogModel.removeMessage(args.toString());
});
_controller = EasyRefreshController();
... ... @@ -51,9 +52,21 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
});
}
//获取未处理在线预订消息
getMessage({bool showLoading = true}) {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
@override
void dispose() {
// TODO: implement dispose
super.dispose();
bus.off("remove_untreated_message");
}
//三种分类各自的未读消息数目
_getUnMsgNum() async {
Map<String, String> params = {"sid": userModel.user.sellerid};
await messageModel.getUnMsgNum(context, params);
}
//获取在线预订消息status 0未处理 1已处理
getMessage({bool showLoading = true}) async {
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": "10", //1提前点餐2内部预订10在线预订
... ... @@ -61,14 +74,17 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
"offset": offset.toString(),
"limit": "20",
};
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
messageModel.getMessages(context, params, showLoading: showLoading);
await messageModel.getMessages(context, params, showLoading: showLoading);
_getUnMsgNum();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
messageModel = Provider.of<MessageModel>(context, listen: true);
userModel = Provider.of<UserModel>(context, listen: false);
messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
return Container(
color: MyColours.color_f5f5f5,
child: Column(
... ... @@ -81,32 +97,46 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
children: [
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if(selectedIndex==0)return;
setState(() {
selectedIndex = 0;
getMessage(showLoading: true);
});
},
child: Center(
child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
)
)),
behavior: HitTestBehavior.opaque,
onTap: () {
if (selectedIndex == 0) return;
setState(() {
selectedIndex = 0;
messageModel.messages = [];
});
getMessage(showLoading: true);
},
child: Center(
child: Text(
"未处理",
style: TextStyle(
color: selectedIndex == 0
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(30)),
),
))),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if(selectedIndex==1)return;
setState(() {
selectedIndex = 1;
behavior: HitTestBehavior.opaque,
onTap: () {
if (selectedIndex == 1) return;
setState(() {
selectedIndex = 1;
messageModel.messages = [];
});
getMessage(showLoading: true);
});
},
child: Center(
child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
)
))
},
child: Center(
child: Text(
"已处理",
style: TextStyle(
color: selectedIndex == 1
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(30)),
),
)))
],
),
),
... ... @@ -117,10 +147,11 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
return ExceptionPage(
pageState: model.pageState,
callback: () {
offset=0;
offset = 0;
getMessage(showLoading: true);
},
emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的在线预订消息哦",
emptyMsg:
"暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的在线预订消息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
... ... @@ -130,16 +161,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return MessageItem(model.messages[index],isTreated: selectedIndex==1,);
}, childCount: model.messages.length),
(BuildContext context, int index) {
return MessageItem(
model.messages[index],
isTreated: selectedIndex == 1,
);
}, childCount: model.messages.length),
)
],
onRefresh: () async {
offset=0;
offset = 0;
getMessage(showLoading: false);
},
onLoad: ()async{
onLoad: () async {
offset++;
getMessage(showLoading: false);
},
... ... @@ -152,11 +186,4 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
),
);
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
bus.off("remove_untreated_message");
}
}
... ...
... ... @@ -3,9 +3,12 @@ import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/order_food_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/h_empty_view.dart';
... ... @@ -18,7 +21,9 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
class MessageHasOrderFoodPage extends StatefulWidget {
final String rid;
MessageHasOrderFoodPage({Key key, this.rid}) : super(key: key);
final bool fromNotify;
MessageHasOrderFoodPage({Key key, this.rid, this.fromNotify = false})
: super(key: key);
@override
_MessageHasOrderFoodPageState createState() =>
... ... @@ -33,12 +38,29 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
@override
void initState() {
super.initState();
// if (widget.fromNotify) {
// _setMessageStatus();
// }
WidgetsBinding.instance.addPostFrameCallback((_) {
_getOrderFoodData();
_getTableInfoData();
});
}
_setMessageStatus() {
Future.delayed(Duration(milliseconds: 200), () async {
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": widget.rid,
"status": "is_read"
};
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
await messageDialogModel.setMessageStatus(context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
});
}
///接口获取菜单信息
_getOrderFoodData() async {
Map<String, String> params = {
... ... @@ -293,7 +315,11 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
appBar: SystemAppBar(
'已点菜品',
onTap: () {
Navigator.of(context).pop();
if (widget.fromNotify) {
NavigatorUtil.goHomePage(context, initialIndex: 0);
} else {
Navigator.of(context).pop();
}
},
),
body: Consumer<OrderFoodProvider>(
... ... @@ -328,6 +354,13 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
radius: ScreenUtil().setWidth(10),
onPressed: () {
Utils.goShareOrderFoodToWeChat(context,
rid: widget.rid,
title: '菜品已点好,快来看看都点了什么~',
img:
'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg');
},
)
],
),
... ...
... ... @@ -34,6 +34,10 @@ class MessageOrderPageState extends State<MessageOrderPage> {
int offset = 0; //当前页数
MessageModel messageModel;
UserModel userModel;
MessageDialogModel messageDialogModel;
@override
void initState() {
// TODO: implement initState
... ... @@ -42,12 +46,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
WidgetsBinding.instance.addPostFrameCallback((_) {
getMessages();
});
//从列表数据本地移除提前点餐消息
bus.on("remove_untreated_message_order", (args) {
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
messageModel.removeUntreatedMessageByMid(args.toString());
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
messageDialogModel.removeMessage(args.toString());
});
}
... ... @@ -58,24 +59,32 @@ class MessageOrderPageState extends State<MessageOrderPage> {
bus.off("remove_untreated_message_order");
}
//三种分类各自的未读消息数目
_getUnMsgNum() async {
Map<String, String> params = {"sid": userModel.user.sellerid};
await messageModel.getUnMsgNum(context, params);
}
//获取消息
getMessages({bool showLoading = true}) {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
getMessages({bool showLoading = true}) async {
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": "1",
"type_id": "1", //1提前点餐2内部预订10在线预订
"status": selectedIndex.toString(),
"offset": offset.toString(),
"limit": "20",
};
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
messageModel.getMessages(context, params, showLoading: showLoading);
await messageModel.getMessages(context, params, showLoading: showLoading);
_getUnMsgNum();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
messageModel = Provider.of<MessageModel>(context, listen: true);
userModel = Provider.of<UserModel>(context, listen: false);
messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
return Container(
color: MyColours.color_f5f5f5,
child: Column(
... ... @@ -93,8 +102,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
if (selectedIndex == 0) return;
setState(() {
selectedIndex = 0;
getMessages();
messageModel.messages = [];
});
getMessages();
},
child: Center(
child: Text(
... ... @@ -113,8 +123,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
if (selectedIndex == 1) return;
setState(() {
selectedIndex = 1;
getMessages();
messageModel.messages = [];
});
getMessages();
},
child: Center(
child: Text(
... ...
... ... @@ -26,6 +26,7 @@ class MessagePageState extends State<MessagePage>
TabController tabController;
MessageModel messageModel;
UserModel userModel;
@override
void initState() {
... ... @@ -38,24 +39,22 @@ class MessagePageState extends State<MessagePage>
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_getUnMsgNum();
});
//刷新未读数
bus.on("refresh_untreated_num", (arg) {
//刷新未读消息数目
_getUnMsgNum();
});
}
//三种分类各自的未读消息数目
_getUnMsgNum() async {
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid
};
Map<String, String> params = {"sid": userModel.user.sellerid};
await messageModel.getUnMsgNum(context, params);
setState(() {});
}
@override
Widget build(BuildContext context) {
// TODO: implement build
messageModel = Provider.of<MessageModel>(context, listen: false);
messageModel = Provider.of<MessageModel>(context, listen: true);
userModel = Provider.of<UserModel>(context, listen: false);
return Container(
width: double.infinity,
height: double.infinity,
... ...
... ... @@ -15,7 +15,9 @@ class MessageDialogModel extends ChangeNotifier {
bool showMessageDialog = false;
List<Message> messages = [];
List<Message> messages = []; //所有消息用于展示
List<Message> unMessagesOnline = []; //未读在线预定
List<Message> unMessagesOrder = []; //未读提前点餐
void init() {
_player.load("tts_online.mp3");
... ... @@ -30,6 +32,9 @@ class MessageDialogModel extends ChangeNotifier {
case "11": //取消在线预订
_player.play("tts_cancel.mp3");
break;
case "1": //提前点餐
_player.play("tts_order.mp3");
break;
case "-1": //>3
_player.play("tts_all.mp3");
break;
... ... @@ -55,18 +60,20 @@ class MessageDialogModel extends ChangeNotifier {
}
//获取未处理在线预订消息
getUntreatedMsg(BuildContext context, Map<String, String> params) async {
getUntreatedMsg(BuildContext context, Map<String, String> params,
VoidCallback callback) async {
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_message_list,
showLoading: false, data: params)
.catchError((error) {
print(error.toString());
});
List<Message> messagesTemp = [];
if (baseResp != null && baseResp.code == Constant.status_success) {
messages = baseResp.data.map<Message>((value) {
messagesTemp = baseResp.data.map<Message>((value) {
return Message.fromJson(value);
}).toList();
messages.removeWhere((message) {
messagesTemp.removeWhere((message) {
if (message.message_type.toString() == "10") {
if (message.status == "4") {
return true;
... ... @@ -74,23 +81,30 @@ class MessageDialogModel extends ChangeNotifier {
return false;
} else if (message.message_type.toString() == "11") {
return false;
} else if (message.message_type.toString() == "1") {
return false;
}
return true;
});
if (messages.isNotEmpty) {
if (!showMessageDialog) {
DialogUtil.showMessageDialog(context);
} else {
notifyListeners();
}
if (messages.length > 1) {
play("-1");
} else {
for (Message message in messages) {
play(message.message_type);
}
}
if (params["type_id"] == '10') {
unMessagesOnline = messagesTemp;
} else if (params["type_id"] == '1') {
unMessagesOrder = messagesTemp;
}
messages = [];
messages.addAll(unMessagesOnline);
messages.addAll(unMessagesOrder);
callback();
// if (messages.isNotEmpty) {
// //播放声音
// if (messages.length > 1) {
// play("-1");
// } else {
// for (Message message in messages) {
// play(message.message_type);
// }
// }
// }
}
}
... ...
... ... @@ -10,6 +10,8 @@ import 'package:one_key/net/http_url.dart';
class MessageModel extends ChangeNotifier {
List<Message> messages = []; //消息
List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
List<Message> unMessagesOrder = []; //未读提前点餐消息
PageState pageState = PageState.Loading;
int onlineTotal = 0; //未处理在线消息数目
... ... @@ -21,6 +23,7 @@ class MessageModel extends ChangeNotifier {
{showLoading = true}) async {
if (showLoading) {
pageState = PageState.Loading;
messages = [];
notifyListeners();
}
BaseResp<List> baseResp = await DioUtil()
... ... @@ -48,6 +51,19 @@ class MessageModel extends ChangeNotifier {
messages = baseResp.data.map<Message>((value) {
return Message.fromJson(value);
}).toList();
} else {
messages.addAll(baseResp.data.map<Message>((value) {
return Message.fromJson(value);
}).toList());
}
if (params["status"] == '0') {
//未读消息数据
//1提前点餐2内部预订 在线预订展示包括取消预订和新的预定 "type_id"
if (params["type_id"] == '1') {
unMessagesOrder = messages;
} else {
unMessagesOnline = messages;
}
}
// if(params["type_id"]=="10"){//在线预订
// messages.removeWhere((message) {
... ... @@ -72,7 +88,7 @@ class MessageModel extends ChangeNotifier {
}
//获取未处理消息数目
Future getUnMsgNum(BuildContext context, Map<String, String> params) async {
getUnMsgNum(BuildContext context, Map<String, String> params) async {
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(
context, Method.get, HttpUrl.get_message_num,
... ... @@ -84,9 +100,8 @@ class MessageModel extends ChangeNotifier {
onlineTotal = int.parse(baseResp.data['online_total'].toString());
inlineTotal = int.parse(baseResp.data['inline_total'].toString());
orderTotal = int.parse(baseResp.data['order_total'].toString());
return;
notifyListeners();
}
return;
}
//根据消息id移除消息
... ...
... ... @@ -169,7 +169,8 @@ var handleRemarkManagerHandler = new Handler(
var handleHasOrderFoodHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
String rid = params["rid"].first;
bool fromNotify = FluroConvertUtils.string2bool(params["fromNotify"].first);
return ChangeNotifierProvider<OrderFoodProvider>(
create: (_) => OrderFoodProvider(),
child: MessageHasOrderFoodPage(rid: rid));
child: MessageHasOrderFoodPage(rid: rid, fromNotify: fromNotify));
});
... ...
... ... @@ -269,6 +269,7 @@ class DialogUtil {
});
messageModel.showMessageDialog = false;
}
//解析返回显示的日期
static String _parseDateDay(DateTime dateTime) {
... ...
... ... @@ -122,7 +122,10 @@ class NavigatorUtil {
}
/// 已选菜品
static void goHasOrderFoodPage(BuildContext context, {String rid}) {
_navigateTo(context, "${Routes.has_order_food}?rid=${rid}");
static void goHasOrderFoodPage(BuildContext context,
{String rid, fromNotify = false, replace = false}) {
_navigateTo(
context, "${Routes.has_order_food}?rid=${rid}&fromNotify=${fromNotify}",
replace: replace);
}
}
... ...
... ... @@ -11,6 +11,7 @@ import 'package:flutter/services.dart';
import 'package:fluwx/fluwx.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/widgets/loading.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
... ... @@ -92,6 +93,37 @@ class Utils {
miniProgramType: WXMiniProgramType.RELEASE);
}
//分享已点菜品
static goShareOrderFoodToWeChat(BuildContext context,
{String title, String rid, String img}) async {
Loading.showLoading(context);
String _webPageUrl = "http://colorcun.com/";
String _thumbnail = img;
String _title = title;
String _userName = "gh_487873d353b3";
String _path =
"pack-cookbook/pages/success?rid=$rid&identity=2&hasOnlyShow=1";
String _description = "OneKey";
var model = new WeChatShareMiniProgramModel(
webPageUrl: _webPageUrl,
userName: _userName,
title: _title,
path: _path,
description: _description,
thumbnail: WeChatImage.network(_thumbnail));
bool isShare = await shareToWeChat(model);
print(isShare);
Loading.hideLoading(context);
}
//拉起小程序已点菜品
static goMiniProgramOrderFood({String rid}) {
launchWeChatMiniProgram(
username: "gh_487873d353b3",
path: "pack-cookbook/pages/success?rid=$rid&identity=2",
miniProgramType: WXMiniProgramType.RELEASE);
}
//跳转拨打电话页面
static goHelp(BuildContext context) async {
NavigatorUtil.goWebviewPage(context);
... ...