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'; @@ -26,6 +26,8 @@ import 'package:one_key/provider/tools.dart';
26 import 'package:one_key/provider/update_model.dart'; 26 import 'package:one_key/provider/update_model.dart';
27 import 'package:one_key/provider/user_model.dart'; 27 import 'package:one_key/provider/user_model.dart';
28 import 'package:one_key/res/colors.dart'; 28 import 'package:one_key/res/colors.dart';
  29 +import 'package:one_key/utils/dialog_util.dart';
  30 +import 'package:one_key/utils/event_bus.dart';
29 import 'package:one_key/utils/misc.dart'; 31 import 'package:one_key/utils/misc.dart';
30 import 'package:one_key/utils/navigator_util.dart'; 32 import 'package:one_key/utils/navigator_util.dart';
31 import 'package:one_key/utils/utils.dart'; 33 import 'package:one_key/utils/utils.dart';
@@ -34,6 +36,7 @@ import 'package:provider/provider.dart'; @@ -34,6 +36,7 @@ import 'package:provider/provider.dart';
34 import 'package:shared_preferences/shared_preferences.dart'; 36 import 'package:shared_preferences/shared_preferences.dart';
35 import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; 37 import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart';
36 import 'package:flutter_app_badger/flutter_app_badger.dart'; 38 import 'package:flutter_app_badger/flutter_app_badger.dart';
  39 +import 'package:one_key/models/message.dart';
37 40
38 class HomePage extends StatefulWidget { 41 class HomePage extends StatefulWidget {
39 final int initialIndex; //初始tab 42 final int initialIndex; //初始tab
@@ -98,7 +101,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -98,7 +101,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
98 updateModel.checkUpdate(context, showToast: false); 101 updateModel.checkUpdate(context, showToast: false);
99 }); 102 });
100 timer = Timer.periodic(Duration(minutes: 3), (_) { 103 timer = Timer.periodic(Duration(minutes: 3), (_) {
101 - getUntreatedMessage(); 104 + _getAllUnMessages();
102 }); 105 });
103 }); 106 });
104 } 107 }
@@ -123,9 +126,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -123,9 +126,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
123 NavigatorUtil.goNotebookDetailPage(context, notifyParam['rid'], 126 NavigatorUtil.goNotebookDetailPage(context, notifyParam['rid'],
124 mid: notifyParam['mid'], fromNotify: true); 127 mid: notifyParam['mid'], fromNotify: true);
125 break; 128 break;
  129 + case "1":
  130 + NavigatorUtil.goHasOrderFoodPage(context,
  131 + rid: notifyParam["rid"], fromNotify: true);
  132 + // bus.emit("remove_untreated_message_order", notifyParam["rid"]);
  133 +
  134 + Map<String, String> params = {
  135 + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  136 + "id": notifyParam['mid'],
  137 + "status": "is_read"
  138 + };
  139 + MessageDialogModel messageDialogModel =
  140 + Provider.of<MessageDialogModel>(context, listen: false);
  141 + await messageDialogModel.setMessageStatus(context, params);
  142 + // bus.emit("refresh_untreated_num"); //刷新未读消息数目
  143 +
  144 + break;
126 } 145 }
127 } else { 146 } else {
128 - getUntreatedMessage(); 147 + _getAllUnMessages();
129 } 148 }
130 } 149 }
131 150
@@ -134,7 +153,6 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -134,7 +153,6 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
134 /// 开启DEBUG 153 /// 开启DEBUG
135 XgFlutterPlugin().setEnableDebug(false); 154 XgFlutterPlugin().setEnableDebug(false);
136 155
137 -  
138 /// 添加回调事件 156 /// 添加回调事件
139 XgFlutterPlugin().addEventHandler( 157 XgFlutterPlugin().addEventHandler(
140 onRegisteredDeviceToken: (String msg) async { 158 onRegisteredDeviceToken: (String msg) async {
@@ -266,19 +284,20 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -266,19 +284,20 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
266 userModel.userTokenInit(context, params); 284 userModel.userTokenInit(context, params);
267 } 285 }
268 286
  287 + // 消息类型ID 1/2/10 提前点餐/新订单(预定)消息/在线预订
269 //获取未处理在线预订消息 288 //获取未处理在线预订消息
270 - getUntreatedMessage() { 289 + getUntreatedMessage(String typeId, VoidCallback callback) {
271 UserModel userModel = Provider.of<UserModel>(context, listen: false); 290 UserModel userModel = Provider.of<UserModel>(context, listen: false);
272 Map<String, String> params = { 291 Map<String, String> params = {
273 "sid": userModel.user.sellerid, 292 "sid": userModel.user.sellerid,
274 - "type_id": "10", //10 在线预订 293 + "type_id": typeId,
275 "status": "0", //未处理 294 "status": "0", //未处理
276 "offset": "0", 295 "offset": "0",
277 "limit": "100", 296 "limit": "100",
278 }; 297 };
279 MessageDialogModel messageModel = 298 MessageDialogModel messageModel =
280 Provider.of<MessageDialogModel>(context, listen: false); 299 Provider.of<MessageDialogModel>(context, listen: false);
281 - messageModel.getUntreatedMsg(context, params); 300 + messageModel.getUntreatedMsg(context, params, callback);
282 } 301 }
283 302
284 @override 303 @override
@@ -288,7 +307,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -288,7 +307,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
288 switch (state) { 307 switch (state) {
289 case AppLifecycleState.resumed: //应用前台可见 308 case AppLifecycleState.resumed: //应用前台可见
290 _clearBadge(() { 309 _clearBadge(() {
291 - getUntreatedMessage(); 310 + _getAllUnMessages();
292 }); 311 });
293 312
294 break; 313 break;
@@ -307,6 +326,33 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -307,6 +326,33 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
307 } 326 }
308 } 327 }
309 328
  329 + ///获取全部未读消息
  330 + ///
  331 + _getAllUnMessages() {
  332 + getUntreatedMessage('1', () {
  333 + getUntreatedMessage('10', () {
  334 + MessageDialogModel messageModel =
  335 + Provider.of<MessageDialogModel>(context, listen: false);
  336 + if (messageModel.messages.isNotEmpty) {
  337 + //底部弹出布局
  338 + if (!messageModel.showMessageDialog) {
  339 + DialogUtil.showMessageDialog(context);
  340 + } else {
  341 + messageModel.notifyListeners();
  342 + }
  343 + //播放声音
  344 + if (messageModel.messages.length > 1) {
  345 + messageModel.play("-1");
  346 + } else {
  347 + for (Message message in messageModel.messages) {
  348 + messageModel.play(message.message_type);
  349 + }
  350 + }
  351 + }
  352 + });
  353 + });
  354 + }
  355 +
310 // 系统窗口相关改变回调 356 // 系统窗口相关改变回调
311 void didChangeMetrics() { 357 void didChangeMetrics() {
312 super.didChangeMetrics(); 358 super.didChangeMetrics();
@@ -7,6 +7,7 @@ import 'package:one_key/pages/home/home_page.dart'; @@ -7,6 +7,7 @@ import 'package:one_key/pages/home/home_page.dart';
7 import 'package:one_key/provider/message_dialog_model.dart'; 7 import 'package:one_key/provider/message_dialog_model.dart';
8 import 'package:one_key/provider/user_model.dart'; 8 import 'package:one_key/provider/user_model.dart';
9 import 'package:one_key/res/colors.dart'; 9 import 'package:one_key/res/colors.dart';
  10 +import 'package:one_key/utils/event_bus.dart';
10 import 'package:one_key/utils/navigator_util.dart'; 11 import 'package:one_key/utils/navigator_util.dart';
11 import 'package:one_key/widgets/common_button.dart'; 12 import 'package:one_key/widgets/common_button.dart';
12 import 'package:one_key/widgets/h_empty_view.dart'; 13 import 'package:one_key/widgets/h_empty_view.dart';
@@ -16,126 +17,176 @@ import 'package:provider/provider.dart'; @@ -16,126 +17,176 @@ import 'package:provider/provider.dart';
16 import '../../app.dart'; 17 import '../../app.dart';
17 18
18 class MessageDialogItem extends StatelessWidget { 19 class MessageDialogItem extends StatelessWidget {
19 -  
20 final Message message; 20 final Message message;
21 final bool isTreated; 21 final bool isTreated;
22 final VoidCallback callback; 22 final VoidCallback callback;
23 - MessageDialogItem(this.message,{this.isTreated=false,this.callback}); 23 + MessageDialogItem(this.message, {this.isTreated = false, this.callback});
24 24
25 @override 25 @override
26 Widget build(BuildContext context) { 26 Widget build(BuildContext context) {
27 // TODO: implement build 27 // TODO: implement build
28 - Color textColor=isTreated?MyColours.color_999999:MyColours.color_353535;  
29 - MessageDialogModel messageDialogModel=Provider.of<MessageDialogModel>(context,listen: false); 28 + String title = ''; //大标题
  29 + String subTitleFir = ''; //第一行标题
  30 + String subTitleSec = ''; //第二行标题
  31 + String subTitleThr = ''; //第三行标题
  32 + if (message.message_type == "10") {
  33 + title = "在线预订";
  34 + subTitleFir = '包间需求';
  35 + subTitleSec = '就餐时间';
  36 + subTitleThr = '预订人';
  37 + } else if (message.message_type == "11") {
  38 + title = "取消预订";
  39 + } else if (message.message_type == "1") {
  40 + title = "提前点餐";
  41 + subTitleFir = '桌位信息';
  42 + subTitleSec = '就餐时间';
  43 + subTitleThr = '预订人';
  44 + }
  45 + Color textColor =
  46 + isTreated ? MyColours.color_999999 : MyColours.color_353535;
  47 + MessageDialogModel messageDialogModel =
  48 + Provider.of<MessageDialogModel>(context, listen: false);
30 return GestureDetector( 49 return GestureDetector(
31 - onTap: (){  
32 - if(isTreated){  
33 - NavigatorUtil.goNotebookDetailPage(context,message.rid.toString());  
34 - }  
35 - },  
36 - child: Stack(  
37 - children: <Widget>[  
38 - Container(  
39 - height: ScreenUtil().setWidth(290),  
40 - margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)),  
41 - padding: EdgeInsets.fromLTRB(  
42 - ScreenUtil().setWidth(12),  
43 - ScreenUtil().setWidth(45),  
44 - ScreenUtil().setWidth(21),  
45 - ScreenUtil().setWidth(43)),  
46 - decoration: BoxDecoration(  
47 - color: MyColours.color_fefefe,  
48 - borderRadius:  
49 - BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8)))),  
50 - child:Column(  
51 - mainAxisSize: MainAxisSize.min,  
52 - crossAxisAlignment: CrossAxisAlignment.start,  
53 - children: <Widget>[  
54 - Row(  
55 - crossAxisAlignment: CrossAxisAlignment.center,  
56 - children: <Widget>[  
57 - Text(  
58 - message.message_type=="10"?"在线预订":"取消预订",  
59 - style: TextStyle(  
60 - color: textColor,  
61 - fontSize: ScreenUtil().setSp(28)),  
62 - ),  
63 - Spacer(),  
64 - Text(  
65 - message.cdateStr,  
66 - style: TextStyle(  
67 - color: MyColours.color_999999,  
68 - fontSize: ScreenUtil().setSp(24)),  
69 - ),  
70 - ],  
71 - ),  
72 - VEmptyView(20),  
73 - message.message_type=="11"?  
74 - Text(  
75 - "${message.ddateStr}的${message.rnameStr}取消了预订",  
76 - style: TextStyle(  
77 - color: textColor,  
78 - fontSize: ScreenUtil().setSp(28)),  
79 - ):  
80 - Column(  
81 - mainAxisSize: MainAxisSize.min,  
82 - crossAxisAlignment: CrossAxisAlignment.start,  
83 - children: <Widget>[  
84 - Text(  
85 - "包间需求:${message.room_demand}",  
86 - style: TextStyle(  
87 - color: textColor,  
88 - fontSize: ScreenUtil().setSp(28)),  
89 - ),  
90 - VEmptyView(10),  
91 - Text(  
92 - "就餐时间:${message.ddateStr}",  
93 - style: TextStyle(  
94 - color: textColor,  
95 - fontSize: ScreenUtil().setSp(28)),  
96 - ),  
97 - VEmptyView(10),  
98 - Text(  
99 - "预订人:${message.rnameStr}",  
100 - style: TextStyle(  
101 - color: textColor,  
102 - fontSize: ScreenUtil().setSp(28)),  
103 - ),  
104 - ],  
105 - )  
106 - ],  
107 - ),  
108 - ),  
109 - Positioned(  
110 - right: ScreenUtil().setWidth(60),  
111 - bottom: ScreenUtil().setWidth(55),  
112 - child:Offstage(  
113 - offstage: isTreated?true:false,  
114 - child: CommonButton(  
115 - width: 160,  
116 - height: 48,  
117 - fontSize: 28,  
118 - content: message.message_type=="10"?"立即处理":"立即查看",  
119 - state: 1,  
120 - onPress: () {  
121 - messageDialogModel.removeMessage(message.id);  
122 - if(message.message_type=="10"){  
123 - NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id,replace: messageDialogModel.messages.isEmpty?true:false);  
124 - }else{  
125 - NavigatorUtil.goNotebookDetailPage(context,message.rid.toString(),replace: messageDialogModel.messages.isEmpty?true:false);  
126 - Map<String, String> params = {  
127 - "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,  
128 - "id": message.id,  
129 - "status": "is_handle"  
130 - };  
131 - messageDialogModel.setMessageStatus(context,params);  
132 - }  
133 - }, 50 + onTap: () {
  51 + if (isTreated) {
  52 + NavigatorUtil.goNotebookDetailPage(context, message.rid.toString());
  53 + }
  54 + },
  55 + child: Stack(
  56 + children: <Widget>[
  57 + Container(
  58 + height: ScreenUtil().setWidth(290),
  59 + margin: EdgeInsets.symmetric(
  60 + horizontal: ScreenUtil().setWidth(39),
  61 + vertical: ScreenUtil().setWidth(12)),
  62 + padding: EdgeInsets.fromLTRB(
  63 + ScreenUtil().setWidth(12),
  64 + ScreenUtil().setWidth(45),
  65 + ScreenUtil().setWidth(21),
  66 + ScreenUtil().setWidth(43)),
  67 + decoration: BoxDecoration(
  68 + color: MyColours.color_fefefe,
  69 + borderRadius: BorderRadius.all(
  70 + Radius.circular(ScreenUtil().setWidth(8)))),
  71 + child: Column(
  72 + mainAxisSize: MainAxisSize.min,
  73 + crossAxisAlignment: CrossAxisAlignment.start,
  74 + children: <Widget>[
  75 + Row(
  76 + crossAxisAlignment: CrossAxisAlignment.center,
  77 + children: <Widget>[
  78 + Text(
  79 + title,
  80 + style: TextStyle(
  81 + color: textColor, fontSize: ScreenUtil().setSp(28)),
  82 + ),
  83 + Spacer(),
  84 + Text(
  85 + message.cdateStr,
  86 + style: TextStyle(
  87 + color: MyColours.color_999999,
  88 + fontSize: ScreenUtil().setSp(24)),
  89 + ),
  90 + ],
  91 + ),
  92 + VEmptyView(20),
  93 + message.message_type == "11"
  94 + ? Text(
  95 + "${message.ddateStr}的${message.rnameStr}取消了预订",
  96 + style: TextStyle(
  97 + color: textColor,
  98 + fontSize: ScreenUtil().setSp(28)),
  99 + )
  100 + : Column(
  101 + mainAxisSize: MainAxisSize.min,
  102 + crossAxisAlignment: CrossAxisAlignment.start,
  103 + children: <Widget>[
  104 + Text(
  105 + "${subTitleFir}:${message.room_demand}",
  106 + style: TextStyle(
  107 + color: textColor,
  108 + fontSize: ScreenUtil().setSp(28)),
  109 + ),
  110 + VEmptyView(10),
  111 + Text(
  112 + "${subTitleSec}:${message.ddateStr}",
  113 + style: TextStyle(
  114 + color: textColor,
  115 + fontSize: ScreenUtil().setSp(28)),
  116 + ),
  117 + VEmptyView(10),
  118 + Text(
  119 + "${subTitleThr}:${message.rnameStr}",
  120 + style: TextStyle(
  121 + color: textColor,
  122 + fontSize: ScreenUtil().setSp(28)),
  123 + ),
  124 + ],
  125 + )
  126 + ],
134 ), 127 ),
135 ), 128 ),
136 - )  
137 - ],  
138 - )  
139 - ); 129 + Positioned(
  130 + right: ScreenUtil().setWidth(60),
  131 + bottom: ScreenUtil().setWidth(55),
  132 + child: Offstage(
  133 + offstage: isTreated ? true : false,
  134 + child: CommonButton(
  135 + width: 160,
  136 + height: 48,
  137 + fontSize: 28,
  138 + content: message.message_type == "10" ? "立即处理" : "立即查看",
  139 + state: 1,
  140 + onPress: () async {
  141 + messageDialogModel.removeMessage(message.id);
  142 + if (message.message_type == "10") {
  143 + NavigatorUtil.goHandleOnlinePage(
  144 + context, message.rid.toString(), message.id,
  145 + replace: messageDialogModel.messages.isEmpty
  146 + ? true
  147 + : false);
  148 + } else if (message.message_type == "11") {
  149 + NavigatorUtil.goNotebookDetailPage(
  150 + context, message.rid.toString(),
  151 + replace: messageDialogModel.messages.isEmpty
  152 + ? true
  153 + : false);
  154 + bus.emit("remove_untreated_message", message.id);
  155 +
  156 + Map<String, String> params = {
  157 + "sid": Provider.of<UserModel>(context, listen: false)
  158 + .user
  159 + .sellerid,
  160 + "id": message.id,
  161 + "status": "is_handle"
  162 + };
  163 + await messageDialogModel.setMessageStatus(
  164 + context, params);
  165 + bus.emit("refresh_untreated_num"); //刷新未读消息数目
  166 + } else if (message.message_type == "1") {
  167 + //提前点餐
  168 + NavigatorUtil.goHasOrderFoodPage(context,
  169 + rid: message.rid,
  170 + replace: messageDialogModel.messages.isEmpty
  171 + ? true
  172 + : false);
  173 + bus.emit("remove_untreated_message_order", message.id);
  174 + Map<String, String> params = {
  175 + "sid": Provider.of<UserModel>(context, listen: false)
  176 + .user
  177 + .sellerid,
  178 + "id": message.id,
  179 + "status": "is_read"
  180 + };
  181 + await messageDialogModel.setMessageStatus(
  182 + context, params);
  183 + bus.emit("refresh_untreated_num"); //刷新未读消息数目
  184 + }
  185 + },
  186 + ),
  187 + ),
  188 + )
  189 + ],
  190 + ));
140 } 191 }
141 } 192 }
@@ -31,18 +31,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -31,18 +31,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
31 31
32 int selectedIndex = 0; 32 int selectedIndex = 0;
33 33
34 - int offset=0; 34 + int offset = 0;
  35 + MessageModel messageModel;
  36 + UserModel userModel;
  37 + MessageDialogModel messageDialogModel;
35 38
36 @override 39 @override
37 void initState() { 40 void initState() {
38 // TODO: implement initState 41 // TODO: implement initState
39 super.initState(); 42 super.initState();
  43 + //移除在线预订消息
40 bus.on("remove_untreated_message", (args) { 44 bus.on("remove_untreated_message", (args) {
41 - MessageModel messageModel =  
42 - Provider.of<MessageModel>(context, listen: false);  
43 messageModel.removeUntreatedMessageByMid(args.toString()); 45 messageModel.removeUntreatedMessageByMid(args.toString());
44 - MessageDialogModel messageDialogModel =  
45 - Provider.of<MessageDialogModel>(context, listen: false); 46 +
46 messageDialogModel.removeMessage(args.toString()); 47 messageDialogModel.removeMessage(args.toString());
47 }); 48 });
48 _controller = EasyRefreshController(); 49 _controller = EasyRefreshController();
@@ -51,9 +52,21 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -51,9 +52,21 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
51 }); 52 });
52 } 53 }
53 54
54 - //获取未处理在线预订消息  
55 - getMessage({bool showLoading = true}) {  
56 - UserModel userModel = Provider.of<UserModel>(context, listen: false); 55 + @override
  56 + void dispose() {
  57 + // TODO: implement dispose
  58 + super.dispose();
  59 + bus.off("remove_untreated_message");
  60 + }
  61 +
  62 + //三种分类各自的未读消息数目
  63 + _getUnMsgNum() async {
  64 + Map<String, String> params = {"sid": userModel.user.sellerid};
  65 + await messageModel.getUnMsgNum(context, params);
  66 + }
  67 +
  68 + //获取在线预订消息status 0未处理 1已处理
  69 + getMessage({bool showLoading = true}) async {
57 Map<String, String> params = { 70 Map<String, String> params = {
58 "sid": userModel.user.sellerid, 71 "sid": userModel.user.sellerid,
59 "type_id": "10", //1提前点餐2内部预订10在线预订 72 "type_id": "10", //1提前点餐2内部预订10在线预订
@@ -61,14 +74,17 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -61,14 +74,17 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
61 "offset": offset.toString(), 74 "offset": offset.toString(),
62 "limit": "20", 75 "limit": "20",
63 }; 76 };
64 - MessageModel messageModel =  
65 - Provider.of<MessageModel>(context, listen: false);  
66 - messageModel.getMessages(context, params, showLoading: showLoading); 77 +
  78 + await messageModel.getMessages(context, params, showLoading: showLoading);
  79 + _getUnMsgNum();
67 } 80 }
68 81
69 @override 82 @override
70 Widget build(BuildContext context) { 83 Widget build(BuildContext context) {
71 - // TODO: implement build 84 + messageModel = Provider.of<MessageModel>(context, listen: true);
  85 + userModel = Provider.of<UserModel>(context, listen: false);
  86 + messageDialogModel =
  87 + Provider.of<MessageDialogModel>(context, listen: false);
72 return Container( 88 return Container(
73 color: MyColours.color_f5f5f5, 89 color: MyColours.color_f5f5f5,
74 child: Column( 90 child: Column(
@@ -81,32 +97,46 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -81,32 +97,46 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
81 children: [ 97 children: [
82 Expanded( 98 Expanded(
83 child: GestureDetector( 99 child: GestureDetector(
84 - behavior: HitTestBehavior.opaque,  
85 - onTap: () {  
86 - if(selectedIndex==0)return;  
87 - setState(() {  
88 - selectedIndex = 0;  
89 - getMessage(showLoading: true);  
90 - });  
91 - },  
92 - child: Center(  
93 - child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),  
94 - )  
95 - )), 100 + behavior: HitTestBehavior.opaque,
  101 + onTap: () {
  102 + if (selectedIndex == 0) return;
  103 + setState(() {
  104 + selectedIndex = 0;
  105 + messageModel.messages = [];
  106 + });
  107 + getMessage(showLoading: true);
  108 + },
  109 + child: Center(
  110 + child: Text(
  111 + "未处理",
  112 + style: TextStyle(
  113 + color: selectedIndex == 0
  114 + ? selectedColor
  115 + : unSelectedColor,
  116 + fontSize: ScreenUtil().setSp(30)),
  117 + ),
  118 + ))),
96 Expanded( 119 Expanded(
97 child: GestureDetector( 120 child: GestureDetector(
98 - behavior: HitTestBehavior.opaque,  
99 - onTap: () {  
100 - if(selectedIndex==1)return;  
101 - setState(() {  
102 - selectedIndex = 1; 121 + behavior: HitTestBehavior.opaque,
  122 + onTap: () {
  123 + if (selectedIndex == 1) return;
  124 + setState(() {
  125 + selectedIndex = 1;
  126 + messageModel.messages = [];
  127 + });
103 getMessage(showLoading: true); 128 getMessage(showLoading: true);
104 - });  
105 - },  
106 - child: Center(  
107 - child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),  
108 - )  
109 - )) 129 + },
  130 + child: Center(
  131 + child: Text(
  132 + "已处理",
  133 + style: TextStyle(
  134 + color: selectedIndex == 1
  135 + ? selectedColor
  136 + : unSelectedColor,
  137 + fontSize: ScreenUtil().setSp(30)),
  138 + ),
  139 + )))
110 ], 140 ],
111 ), 141 ),
112 ), 142 ),
@@ -117,10 +147,11 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -117,10 +147,11 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
117 return ExceptionPage( 147 return ExceptionPage(
118 pageState: model.pageState, 148 pageState: model.pageState,
119 callback: () { 149 callback: () {
120 - offset=0; 150 + offset = 0;
121 getMessage(showLoading: true); 151 getMessage(showLoading: true);
122 }, 152 },
123 - emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的在线预订消息哦", 153 + emptyMsg:
  154 + "暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的在线预订消息哦",
124 emptyImg: "empty_search", 155 emptyImg: "empty_search",
125 showMsg: "加载中,请稍后...", 156 showMsg: "加载中,请稍后...",
126 ); 157 );
@@ -130,16 +161,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -130,16 +161,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
130 slivers: [ 161 slivers: [
131 SliverList( 162 SliverList(
132 delegate: SliverChildBuilderDelegate( 163 delegate: SliverChildBuilderDelegate(
133 - (BuildContext context, int index) {  
134 - return MessageItem(model.messages[index],isTreated: selectedIndex==1,);  
135 - }, childCount: model.messages.length), 164 + (BuildContext context, int index) {
  165 + return MessageItem(
  166 + model.messages[index],
  167 + isTreated: selectedIndex == 1,
  168 + );
  169 + }, childCount: model.messages.length),
136 ) 170 )
137 ], 171 ],
138 onRefresh: () async { 172 onRefresh: () async {
139 - offset=0; 173 + offset = 0;
140 getMessage(showLoading: false); 174 getMessage(showLoading: false);
141 }, 175 },
142 - onLoad: ()async{ 176 + onLoad: () async {
143 offset++; 177 offset++;
144 getMessage(showLoading: false); 178 getMessage(showLoading: false);
145 }, 179 },
@@ -152,11 +186,4 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -152,11 +186,4 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
152 ), 186 ),
153 ); 187 );
154 } 188 }
155 -  
156 - @override  
157 - void dispose() {  
158 - // TODO: implement dispose  
159 - super.dispose();  
160 - bus.off("remove_untreated_message");  
161 - }  
162 } 189 }
@@ -3,9 +3,12 @@ import 'package:common_utils/common_utils.dart'; @@ -3,9 +3,12 @@ import 'package:common_utils/common_utils.dart';
3 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
4 import 'package:flutter_screenutil/flutter_screenutil.dart'; 4 import 'package:flutter_screenutil/flutter_screenutil.dart';
5 import 'package:one_key/constant/state.dart'; 5 import 'package:one_key/constant/state.dart';
  6 +import 'package:one_key/provider/message_dialog_model.dart';
6 import 'package:one_key/provider/order_food_provider.dart'; 7 import 'package:one_key/provider/order_food_provider.dart';
7 import 'package:one_key/provider/user_model.dart'; 8 import 'package:one_key/provider/user_model.dart';
8 import 'package:one_key/res/colors.dart'; 9 import 'package:one_key/res/colors.dart';
  10 +import 'package:one_key/utils/event_bus.dart';
  11 +import 'package:one_key/utils/navigator_util.dart';
9 import 'package:one_key/utils/utils.dart'; 12 import 'package:one_key/utils/utils.dart';
10 import 'package:one_key/widgets/MyDivider.dart'; 13 import 'package:one_key/widgets/MyDivider.dart';
11 import 'package:one_key/widgets/h_empty_view.dart'; 14 import 'package:one_key/widgets/h_empty_view.dart';
@@ -18,7 +21,9 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; @@ -18,7 +21,9 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
18 21
19 class MessageHasOrderFoodPage extends StatefulWidget { 22 class MessageHasOrderFoodPage extends StatefulWidget {
20 final String rid; 23 final String rid;
21 - MessageHasOrderFoodPage({Key key, this.rid}) : super(key: key); 24 + final bool fromNotify;
  25 + MessageHasOrderFoodPage({Key key, this.rid, this.fromNotify = false})
  26 + : super(key: key);
22 27
23 @override 28 @override
24 _MessageHasOrderFoodPageState createState() => 29 _MessageHasOrderFoodPageState createState() =>
@@ -33,12 +38,29 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { @@ -33,12 +38,29 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
33 @override 38 @override
34 void initState() { 39 void initState() {
35 super.initState(); 40 super.initState();
  41 + // if (widget.fromNotify) {
  42 + // _setMessageStatus();
  43 + // }
36 WidgetsBinding.instance.addPostFrameCallback((_) { 44 WidgetsBinding.instance.addPostFrameCallback((_) {
37 _getOrderFoodData(); 45 _getOrderFoodData();
38 _getTableInfoData(); 46 _getTableInfoData();
39 }); 47 });
40 } 48 }
41 49
  50 + _setMessageStatus() {
  51 + Future.delayed(Duration(milliseconds: 200), () async {
  52 + Map<String, String> params = {
  53 + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  54 + "id": widget.rid,
  55 + "status": "is_read"
  56 + };
  57 + MessageDialogModel messageDialogModel =
  58 + Provider.of<MessageDialogModel>(context, listen: false);
  59 + await messageDialogModel.setMessageStatus(context, params);
  60 + bus.emit("refresh_untreated_num"); //刷新未读消息数目
  61 + });
  62 + }
  63 +
42 ///接口获取菜单信息 64 ///接口获取菜单信息
43 _getOrderFoodData() async { 65 _getOrderFoodData() async {
44 Map<String, String> params = { 66 Map<String, String> params = {
@@ -293,7 +315,11 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { @@ -293,7 +315,11 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
293 appBar: SystemAppBar( 315 appBar: SystemAppBar(
294 '已点菜品', 316 '已点菜品',
295 onTap: () { 317 onTap: () {
296 - Navigator.of(context).pop(); 318 + if (widget.fromNotify) {
  319 + NavigatorUtil.goHomePage(context, initialIndex: 0);
  320 + } else {
  321 + Navigator.of(context).pop();
  322 + }
297 }, 323 },
298 ), 324 ),
299 body: Consumer<OrderFoodProvider>( 325 body: Consumer<OrderFoodProvider>(
@@ -328,6 +354,13 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { @@ -328,6 +354,13 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
328 gradientStart: MyColours.color_199095, 354 gradientStart: MyColours.color_199095,
329 gradientEnd: MyColours.color_199095, 355 gradientEnd: MyColours.color_199095,
330 radius: ScreenUtil().setWidth(10), 356 radius: ScreenUtil().setWidth(10),
  357 + onPressed: () {
  358 + Utils.goShareOrderFoodToWeChat(context,
  359 + rid: widget.rid,
  360 + title: '菜品已点好,快来看看都点了什么~',
  361 + img:
  362 + 'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg');
  363 + },
331 ) 364 )
332 ], 365 ],
333 ), 366 ),
@@ -34,6 +34,10 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -34,6 +34,10 @@ class MessageOrderPageState extends State<MessageOrderPage> {
34 34
35 int offset = 0; //当前页数 35 int offset = 0; //当前页数
36 36
  37 + MessageModel messageModel;
  38 + UserModel userModel;
  39 + MessageDialogModel messageDialogModel;
  40 +
37 @override 41 @override
38 void initState() { 42 void initState() {
39 // TODO: implement initState 43 // TODO: implement initState
@@ -42,12 +46,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -42,12 +46,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
42 WidgetsBinding.instance.addPostFrameCallback((_) { 46 WidgetsBinding.instance.addPostFrameCallback((_) {
43 getMessages(); 47 getMessages();
44 }); 48 });
  49 + //从列表数据本地移除提前点餐消息
45 bus.on("remove_untreated_message_order", (args) { 50 bus.on("remove_untreated_message_order", (args) {
46 - MessageModel messageModel =  
47 - Provider.of<MessageModel>(context, listen: false);  
48 messageModel.removeUntreatedMessageByMid(args.toString()); 51 messageModel.removeUntreatedMessageByMid(args.toString());
49 - MessageDialogModel messageDialogModel =  
50 - Provider.of<MessageDialogModel>(context, listen: false);  
51 messageDialogModel.removeMessage(args.toString()); 52 messageDialogModel.removeMessage(args.toString());
52 }); 53 });
53 } 54 }
@@ -58,24 +59,32 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -58,24 +59,32 @@ class MessageOrderPageState extends State<MessageOrderPage> {
58 bus.off("remove_untreated_message_order"); 59 bus.off("remove_untreated_message_order");
59 } 60 }
60 61
  62 + //三种分类各自的未读消息数目
  63 + _getUnMsgNum() async {
  64 + Map<String, String> params = {"sid": userModel.user.sellerid};
  65 + await messageModel.getUnMsgNum(context, params);
  66 + }
  67 +
61 //获取消息 68 //获取消息
62 - getMessages({bool showLoading = true}) {  
63 - UserModel userModel = Provider.of<UserModel>(context, listen: false); 69 + getMessages({bool showLoading = true}) async {
64 Map<String, String> params = { 70 Map<String, String> params = {
65 "sid": userModel.user.sellerid, 71 "sid": userModel.user.sellerid,
66 - "type_id": "1", 72 + "type_id": "1", //1提前点餐2内部预订10在线预订
67 "status": selectedIndex.toString(), 73 "status": selectedIndex.toString(),
68 "offset": offset.toString(), 74 "offset": offset.toString(),
69 "limit": "20", 75 "limit": "20",
70 }; 76 };
71 - MessageModel messageModel =  
72 - Provider.of<MessageModel>(context, listen: false);  
73 - messageModel.getMessages(context, params, showLoading: showLoading); 77 + await messageModel.getMessages(context, params, showLoading: showLoading);
  78 + _getUnMsgNum();
74 } 79 }
75 80
76 @override 81 @override
77 Widget build(BuildContext context) { 82 Widget build(BuildContext context) {
78 // TODO: implement build 83 // TODO: implement build
  84 + messageModel = Provider.of<MessageModel>(context, listen: true);
  85 + userModel = Provider.of<UserModel>(context, listen: false);
  86 + messageDialogModel =
  87 + Provider.of<MessageDialogModel>(context, listen: false);
79 return Container( 88 return Container(
80 color: MyColours.color_f5f5f5, 89 color: MyColours.color_f5f5f5,
81 child: Column( 90 child: Column(
@@ -93,8 +102,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -93,8 +102,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
93 if (selectedIndex == 0) return; 102 if (selectedIndex == 0) return;
94 setState(() { 103 setState(() {
95 selectedIndex = 0; 104 selectedIndex = 0;
96 - getMessages(); 105 + messageModel.messages = [];
97 }); 106 });
  107 + getMessages();
98 }, 108 },
99 child: Center( 109 child: Center(
100 child: Text( 110 child: Text(
@@ -113,8 +123,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -113,8 +123,9 @@ class MessageOrderPageState extends State<MessageOrderPage> {
113 if (selectedIndex == 1) return; 123 if (selectedIndex == 1) return;
114 setState(() { 124 setState(() {
115 selectedIndex = 1; 125 selectedIndex = 1;
116 - getMessages(); 126 + messageModel.messages = [];
117 }); 127 });
  128 + getMessages();
118 }, 129 },
119 child: Center( 130 child: Center(
120 child: Text( 131 child: Text(
@@ -26,6 +26,7 @@ class MessagePageState extends State<MessagePage> @@ -26,6 +26,7 @@ class MessagePageState extends State<MessagePage>
26 TabController tabController; 26 TabController tabController;
27 27
28 MessageModel messageModel; 28 MessageModel messageModel;
  29 + UserModel userModel;
29 30
30 @override 31 @override
31 void initState() { 32 void initState() {
@@ -38,24 +39,22 @@ class MessagePageState extends State<MessagePage> @@ -38,24 +39,22 @@ class MessagePageState extends State<MessagePage>
38 WidgetsBinding.instance.addPostFrameCallback((timeStamp) { 39 WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
39 _getUnMsgNum(); 40 _getUnMsgNum();
40 }); 41 });
  42 + //刷新未读数
41 bus.on("refresh_untreated_num", (arg) { 43 bus.on("refresh_untreated_num", (arg) {
42 - //刷新未读消息数目  
43 _getUnMsgNum(); 44 _getUnMsgNum();
44 }); 45 });
45 } 46 }
46 47
  48 + //三种分类各自的未读消息数目
47 _getUnMsgNum() async { 49 _getUnMsgNum() async {
48 - Map<String, String> params = {  
49 - "sid": Provider.of<UserModel>(context, listen: false).user.sellerid  
50 - }; 50 + Map<String, String> params = {"sid": userModel.user.sellerid};
51 await messageModel.getUnMsgNum(context, params); 51 await messageModel.getUnMsgNum(context, params);
52 - setState(() {});  
53 } 52 }
54 53
55 @override 54 @override
56 Widget build(BuildContext context) { 55 Widget build(BuildContext context) {
57 - // TODO: implement build  
58 - messageModel = Provider.of<MessageModel>(context, listen: false); 56 + messageModel = Provider.of<MessageModel>(context, listen: true);
  57 + userModel = Provider.of<UserModel>(context, listen: false);
59 return Container( 58 return Container(
60 width: double.infinity, 59 width: double.infinity,
61 height: double.infinity, 60 height: double.infinity,
@@ -15,7 +15,9 @@ class MessageDialogModel extends ChangeNotifier { @@ -15,7 +15,9 @@ class MessageDialogModel extends ChangeNotifier {
15 15
16 bool showMessageDialog = false; 16 bool showMessageDialog = false;
17 17
18 - List<Message> messages = []; 18 + List<Message> messages = []; //所有消息用于展示
  19 + List<Message> unMessagesOnline = []; //未读在线预定
  20 + List<Message> unMessagesOrder = []; //未读提前点餐
19 21
20 void init() { 22 void init() {
21 _player.load("tts_online.mp3"); 23 _player.load("tts_online.mp3");
@@ -30,6 +32,9 @@ class MessageDialogModel extends ChangeNotifier { @@ -30,6 +32,9 @@ class MessageDialogModel extends ChangeNotifier {
30 case "11": //取消在线预订 32 case "11": //取消在线预订
31 _player.play("tts_cancel.mp3"); 33 _player.play("tts_cancel.mp3");
32 break; 34 break;
  35 + case "1": //提前点餐
  36 + _player.play("tts_order.mp3");
  37 + break;
33 case "-1": //>3 38 case "-1": //>3
34 _player.play("tts_all.mp3"); 39 _player.play("tts_all.mp3");
35 break; 40 break;
@@ -55,18 +60,20 @@ class MessageDialogModel extends ChangeNotifier { @@ -55,18 +60,20 @@ class MessageDialogModel extends ChangeNotifier {
55 } 60 }
56 61
57 //获取未处理在线预订消息 62 //获取未处理在线预订消息
58 - getUntreatedMsg(BuildContext context, Map<String, String> params) async { 63 + getUntreatedMsg(BuildContext context, Map<String, String> params,
  64 + VoidCallback callback) async {
59 BaseResp<List> baseResp = await DioUtil() 65 BaseResp<List> baseResp = await DioUtil()
60 .request<List>(context, Method.get, HttpUrl.get_message_list, 66 .request<List>(context, Method.get, HttpUrl.get_message_list,
61 showLoading: false, data: params) 67 showLoading: false, data: params)
62 .catchError((error) { 68 .catchError((error) {
63 print(error.toString()); 69 print(error.toString());
64 }); 70 });
  71 + List<Message> messagesTemp = [];
65 if (baseResp != null && baseResp.code == Constant.status_success) { 72 if (baseResp != null && baseResp.code == Constant.status_success) {
66 - messages = baseResp.data.map<Message>((value) { 73 + messagesTemp = baseResp.data.map<Message>((value) {
67 return Message.fromJson(value); 74 return Message.fromJson(value);
68 }).toList(); 75 }).toList();
69 - messages.removeWhere((message) { 76 + messagesTemp.removeWhere((message) {
70 if (message.message_type.toString() == "10") { 77 if (message.message_type.toString() == "10") {
71 if (message.status == "4") { 78 if (message.status == "4") {
72 return true; 79 return true;
@@ -74,23 +81,30 @@ class MessageDialogModel extends ChangeNotifier { @@ -74,23 +81,30 @@ class MessageDialogModel extends ChangeNotifier {
74 return false; 81 return false;
75 } else if (message.message_type.toString() == "11") { 82 } else if (message.message_type.toString() == "11") {
76 return false; 83 return false;
  84 + } else if (message.message_type.toString() == "1") {
  85 + return false;
77 } 86 }
78 return true; 87 return true;
79 }); 88 });
80 - if (messages.isNotEmpty) {  
81 - if (!showMessageDialog) {  
82 - DialogUtil.showMessageDialog(context);  
83 - } else {  
84 - notifyListeners();  
85 - }  
86 - if (messages.length > 1) {  
87 - play("-1");  
88 - } else {  
89 - for (Message message in messages) {  
90 - play(message.message_type);  
91 - }  
92 - } 89 + if (params["type_id"] == '10') {
  90 + unMessagesOnline = messagesTemp;
  91 + } else if (params["type_id"] == '1') {
  92 + unMessagesOrder = messagesTemp;
93 } 93 }
  94 + messages = [];
  95 + messages.addAll(unMessagesOnline);
  96 + messages.addAll(unMessagesOrder);
  97 + callback();
  98 + // if (messages.isNotEmpty) {
  99 + // //播放声音
  100 + // if (messages.length > 1) {
  101 + // play("-1");
  102 + // } else {
  103 + // for (Message message in messages) {
  104 + // play(message.message_type);
  105 + // }
  106 + // }
  107 + // }
94 } 108 }
95 } 109 }
96 110
@@ -10,6 +10,8 @@ import 'package:one_key/net/http_url.dart'; @@ -10,6 +10,8 @@ import 'package:one_key/net/http_url.dart';
10 class MessageModel extends ChangeNotifier { 10 class MessageModel extends ChangeNotifier {
11 List<Message> messages = []; //消息 11 List<Message> messages = []; //消息
12 12
  13 + List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
  14 + List<Message> unMessagesOrder = []; //未读提前点餐消息
13 PageState pageState = PageState.Loading; 15 PageState pageState = PageState.Loading;
14 16
15 int onlineTotal = 0; //未处理在线消息数目 17 int onlineTotal = 0; //未处理在线消息数目
@@ -21,6 +23,7 @@ class MessageModel extends ChangeNotifier { @@ -21,6 +23,7 @@ class MessageModel extends ChangeNotifier {
21 {showLoading = true}) async { 23 {showLoading = true}) async {
22 if (showLoading) { 24 if (showLoading) {
23 pageState = PageState.Loading; 25 pageState = PageState.Loading;
  26 + messages = [];
24 notifyListeners(); 27 notifyListeners();
25 } 28 }
26 BaseResp<List> baseResp = await DioUtil() 29 BaseResp<List> baseResp = await DioUtil()
@@ -48,6 +51,19 @@ class MessageModel extends ChangeNotifier { @@ -48,6 +51,19 @@ class MessageModel extends ChangeNotifier {
48 messages = baseResp.data.map<Message>((value) { 51 messages = baseResp.data.map<Message>((value) {
49 return Message.fromJson(value); 52 return Message.fromJson(value);
50 }).toList(); 53 }).toList();
  54 + } else {
  55 + messages.addAll(baseResp.data.map<Message>((value) {
  56 + return Message.fromJson(value);
  57 + }).toList());
  58 + }
  59 + if (params["status"] == '0') {
  60 + //未读消息数据
  61 + //1提前点餐2内部预订 在线预订展示包括取消预订和新的预定 "type_id"
  62 + if (params["type_id"] == '1') {
  63 + unMessagesOrder = messages;
  64 + } else {
  65 + unMessagesOnline = messages;
  66 + }
51 } 67 }
52 // if(params["type_id"]=="10"){//在线预订 68 // if(params["type_id"]=="10"){//在线预订
53 // messages.removeWhere((message) { 69 // messages.removeWhere((message) {
@@ -72,7 +88,7 @@ class MessageModel extends ChangeNotifier { @@ -72,7 +88,7 @@ class MessageModel extends ChangeNotifier {
72 } 88 }
73 89
74 //获取未处理消息数目 90 //获取未处理消息数目
75 - Future getUnMsgNum(BuildContext context, Map<String, String> params) async { 91 + getUnMsgNum(BuildContext context, Map<String, String> params) async {
76 BaseResp<Map<String, dynamic>> baseResp = await DioUtil() 92 BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
77 .request<Map<String, dynamic>>( 93 .request<Map<String, dynamic>>(
78 context, Method.get, HttpUrl.get_message_num, 94 context, Method.get, HttpUrl.get_message_num,
@@ -84,9 +100,8 @@ class MessageModel extends ChangeNotifier { @@ -84,9 +100,8 @@ class MessageModel extends ChangeNotifier {
84 onlineTotal = int.parse(baseResp.data['online_total'].toString()); 100 onlineTotal = int.parse(baseResp.data['online_total'].toString());
85 inlineTotal = int.parse(baseResp.data['inline_total'].toString()); 101 inlineTotal = int.parse(baseResp.data['inline_total'].toString());
86 orderTotal = int.parse(baseResp.data['order_total'].toString()); 102 orderTotal = int.parse(baseResp.data['order_total'].toString());
87 - return; 103 + notifyListeners();
88 } 104 }
89 - return;  
90 } 105 }
91 106
92 //根据消息id移除消息 107 //根据消息id移除消息
@@ -169,7 +169,8 @@ var handleRemarkManagerHandler = new Handler( @@ -169,7 +169,8 @@ var handleRemarkManagerHandler = new Handler(
169 var handleHasOrderFoodHandler = new Handler( 169 var handleHasOrderFoodHandler = new Handler(
170 handlerFunc: (BuildContext context, Map<String, List<Object>> params) { 170 handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
171 String rid = params["rid"].first; 171 String rid = params["rid"].first;
  172 + bool fromNotify = FluroConvertUtils.string2bool(params["fromNotify"].first);
172 return ChangeNotifierProvider<OrderFoodProvider>( 173 return ChangeNotifierProvider<OrderFoodProvider>(
173 create: (_) => OrderFoodProvider(), 174 create: (_) => OrderFoodProvider(),
174 - child: MessageHasOrderFoodPage(rid: rid)); 175 + child: MessageHasOrderFoodPage(rid: rid, fromNotify: fromNotify));
175 }); 176 });
@@ -269,6 +269,7 @@ class DialogUtil { @@ -269,6 +269,7 @@ class DialogUtil {
269 }); 269 });
270 messageModel.showMessageDialog = false; 270 messageModel.showMessageDialog = false;
271 } 271 }
  272 +
272 273
273 //解析返回显示的日期 274 //解析返回显示的日期
274 static String _parseDateDay(DateTime dateTime) { 275 static String _parseDateDay(DateTime dateTime) {
@@ -122,7 +122,10 @@ class NavigatorUtil { @@ -122,7 +122,10 @@ class NavigatorUtil {
122 } 122 }
123 123
124 /// 已选菜品 124 /// 已选菜品
125 - static void goHasOrderFoodPage(BuildContext context, {String rid}) {  
126 - _navigateTo(context, "${Routes.has_order_food}?rid=${rid}"); 125 + static void goHasOrderFoodPage(BuildContext context,
  126 + {String rid, fromNotify = false, replace = false}) {
  127 + _navigateTo(
  128 + context, "${Routes.has_order_food}?rid=${rid}&fromNotify=${fromNotify}",
  129 + replace: replace);
127 } 130 }
128 } 131 }
@@ -11,6 +11,7 @@ import 'package:flutter/services.dart'; @@ -11,6 +11,7 @@ import 'package:flutter/services.dart';
11 import 'package:fluwx/fluwx.dart'; 11 import 'package:fluwx/fluwx.dart';
12 import 'package:one_key/provider/user_model.dart'; 12 import 'package:one_key/provider/user_model.dart';
13 import 'package:one_key/utils/navigator_util.dart'; 13 import 'package:one_key/utils/navigator_util.dart';
  14 +import 'package:one_key/widgets/loading.dart';
14 import 'package:package_info/package_info.dart'; 15 import 'package:package_info/package_info.dart';
15 import 'package:provider/provider.dart'; 16 import 'package:provider/provider.dart';
16 import 'package:url_launcher/url_launcher.dart'; 17 import 'package:url_launcher/url_launcher.dart';
@@ -92,6 +93,37 @@ class Utils { @@ -92,6 +93,37 @@ class Utils {
92 miniProgramType: WXMiniProgramType.RELEASE); 93 miniProgramType: WXMiniProgramType.RELEASE);
93 } 94 }
94 95
  96 + //分享已点菜品
  97 + static goShareOrderFoodToWeChat(BuildContext context,
  98 + {String title, String rid, String img}) async {
  99 + Loading.showLoading(context);
  100 + String _webPageUrl = "http://colorcun.com/";
  101 + String _thumbnail = img;
  102 + String _title = title;
  103 + String _userName = "gh_487873d353b3";
  104 + String _path =
  105 + "pack-cookbook/pages/success?rid=$rid&identity=2&hasOnlyShow=1";
  106 + String _description = "OneKey";
  107 + var model = new WeChatShareMiniProgramModel(
  108 + webPageUrl: _webPageUrl,
  109 + userName: _userName,
  110 + title: _title,
  111 + path: _path,
  112 + description: _description,
  113 + thumbnail: WeChatImage.network(_thumbnail));
  114 + bool isShare = await shareToWeChat(model);
  115 + print(isShare);
  116 + Loading.hideLoading(context);
  117 + }
  118 +
  119 + //拉起小程序已点菜品
  120 + static goMiniProgramOrderFood({String rid}) {
  121 + launchWeChatMiniProgram(
  122 + username: "gh_487873d353b3",
  123 + path: "pack-cookbook/pages/success?rid=$rid&identity=2",
  124 + miniProgramType: WXMiniProgramType.RELEASE);
  125 + }
  126 +
95 //跳转拨打电话页面 127 //跳转拨打电话页面
96 static goHelp(BuildContext context) async { 128 static goHelp(BuildContext context) async {
97 NavigatorUtil.goWebviewPage(context); 129 NavigatorUtil.goWebviewPage(context);