Commit f73c7b19f72c55766bb42aa99c53ac894242f7e9

Authored by wdn127929
1 parent 0089236a

消息中心调整

83b3ddec6f4d9a6ed2f11de1a0a1915e
\ No newline at end of file
7babc7873f8d177769b987ba4c6c2911
\ No newline at end of file
... ...
... ... @@ -40,6 +40,7 @@ class Message {
}
}
///年月日 餐段
String get ddateStr {
String ymd = "";
if (ddate_long != null) {
... ...
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/message/messsage_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/page_error.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:provider/provider.dart';
import 'package:one_key/utils/event_bus.dart';
/**
* 在线买单消息
*/
class MessageOnlineCheckPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MessageOnlineCheckPageState();
}
}
class MessageOnlineCheckPageState extends State<MessageOnlineCheckPage> {
EasyRefreshController _controller;
Color selectedColor = MyColours.color_199095;
Color unSelectedColor = MyColours.color_999999;
int selectedIndex = 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.removeUntreatedMessageByMid(args.toString());
// messageDialogModel.removeMessage(args.toString());
// });
_controller = EasyRefreshController();
WidgetsBinding.instance.addPostFrameCallback((_) {
// getMessage();
setState(() {
messageModel.pageState = PageState.Loading;
});
});
}
@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": "12", //1提前点餐 2内部预订 10在线预订 12在线买单
"status": selectedIndex.toString(),
"offset": offset.toString(),
"limit": "20",
};
await messageModel.getMessages(context, params, showLoading: showLoading);
_getUnMsgNum();
}
@override
Widget build(BuildContext context) {
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(
children: [
Container(
width: double.infinity,
height: ScreenUtil().setWidth(84),
color: MyColours.color_ffffff,
child: Row(
children: [
Expanded(
child: GestureDetector(
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;
messageModel.messages = [];
});
getMessage(showLoading: true);
},
child: Center(
child: Text(
"已处理",
style: TextStyle(
color: selectedIndex == 1
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(30)),
),
)))
],
),
),
Expanded(
child: Consumer<MessageModel>(
builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
offset = 0;
getMessage(showLoading: true);
},
emptyMsg:
"暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的在线预订消息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return EasyRefresh.custom(
controller: _controller,
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return MessageItem(
model.messages[index],
isTreated: selectedIndex == 1,
);
}, childCount: model.messages.length),
)
],
onRefresh: () async {
offset = 0;
getMessage(showLoading: false);
},
onLoad: () async {
offset++;
getMessage(showLoading: false);
},
);
}
},
),
)
],
),
);
}
}
... ...
... ... @@ -48,7 +48,10 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
});
_controller = EasyRefreshController();
WidgetsBinding.instance.addPostFrameCallback((_) {
getMessage();
// getMessage();
setState(() {
messageModel.pageState = PageState.Loading;
});
});
}
... ...
... ... @@ -19,6 +19,9 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
/*
已选菜品
*/
class MessageHasOrderFoodPage extends StatefulWidget {
final String rid;
final bool fromNotify;
... ...
... ... @@ -44,7 +44,11 @@ class MessageOrderPageState extends State<MessageOrderPage> {
super.initState();
_controller = EasyRefreshController();
WidgetsBinding.instance.addPostFrameCallback((_) {
getMessages();
// getMessages();
setState(() {
messageModel.pageState = PageState.Loading;
});
});
//从列表数据本地移除提前点餐消息
bus.on("remove_untreated_message_order", (args) {
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/message/message_online_check_page.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
... ... @@ -10,6 +12,9 @@ import 'package:provider/provider.dart';
import 'message_online_page.dart';
import 'message_order_page.dart';
/*
消息中心
*/
class MessagePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
... ... @@ -30,14 +35,16 @@ class MessagePageState extends State<MessagePage>
@override
void initState() {
// TODO: implement initState
super.initState();
tabController = TabController(length: 2, vsync: this);
tabController = TabController(length: 3, vsync: this);
tabController.addListener(() {
setState(() {});
//点击tab时或滑动tab回调一次
if (tabController.index.toDouble() == tabController.animation.value) {
getMessage(index: tabController.index);
}
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_getUnMsgNum();
getMessage(index: 0);
});
//刷新未读数
bus.on("refresh_untreated_num", (arg) {
... ... @@ -51,6 +58,27 @@ class MessagePageState extends State<MessagePage>
await messageModel.getUnMsgNum(context, params);
}
//获取在线预订消息status 0未处理 1已处理
getMessage({bool showLoading = true, int index}) async {
String typeId = '';
if (index == 0) {
typeId = '10';
} else if (index == 1) {
typeId = '1';
} else if (index == 2) {
typeId = '12';
}
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": typeId, //1提前点餐2内部预订10在线预订
"status": '0',
"offset": '0',
"limit": "20",
};
await messageModel.getMessages(context, params, showLoading: showLoading);
_getUnMsgNum();
}
@override
Widget build(BuildContext context) {
messageModel = Provider.of<MessageModel>(context, listen: true);
... ... @@ -134,6 +162,39 @@ class MessagePageState extends State<MessagePage>
),
),
),
Tab(
child: SizedBox(
height: ScreenUtil().setWidth(60),
width: ScreenUtil().setWidth(144),
child: Stack(
children: [
Text(
"在线买单",
style: TextStyle(
color: tabController.index == 2
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold),
),
Positioned(
top: 0,
right: 0,
child: Container(
width: ScreenUtil().setWidth(16),
height: ScreenUtil().setWidth(16),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(16)),
color: messageModel.checkTotal > 0
? MyColours.color_fa5151
: MyColours.color_ffffff),
),
)
],
),
),
)
],
indicatorColor: MyColours.color_199095,
indicatorSize: TabBarIndicatorSize.label,
... ... @@ -145,9 +206,11 @@ class MessagePageState extends State<MessagePage>
VEmptyView(11),
Expanded(
flex: 1,
child: TabBarView(
controller: tabController,
children: [MessageOnlinePage(), MessageOrderPage()]),
child: TabBarView(controller: tabController, children: [
MessageOnlinePage(),
MessageOrderPage(),
MessageOnlineCheckPage()
]),
)
],
),
... ...
... ... @@ -23,17 +23,29 @@ class MessageItem extends StatelessWidget {
Color textColor =
isTreated ? MyColours.color_999999 : MyColours.color_353535;
String titleText = "";
String subTitleTextFir = "";
String subTitleTextSec = "";
if (message.message_type == "10") {
titleText = "在线预订";
subTitleTextFir = '包间需求';
subTitleTextSec = '就餐时间';
} else if (message.message_type == "11") {
titleText = "取消预订";
} else if (message.message_type == "1") {
titleText = "提前点餐";
subTitleTextFir = '桌位信息';
subTitleTextSec = '就餐时间';
} else if (message.message_type == "12") {
titleText = "在线买单";
subTitleTextFir = '桌位信息';
subTitleTextSec = '申请时间';
}
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
return GestureDetector(
onTap: () {
//true已处理跳转 false未处理列表不需要点击事件
if (isTreated) {
if (message.message_type == "10") {
NavigatorUtil.goNotebookDetailPage(
... ... @@ -43,6 +55,8 @@ class MessageItem extends StatelessWidget {
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString());
} else if (message.message_type == "12") {
//在线买单消息查看
}
}
},
... ... @@ -96,14 +110,14 @@ class MessageItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"${message.message_type == '1' ? '桌位信息:' : '包间需求:'}${message.message_type == '1' ? message.room_info : message.room_demand}",
"${subTitleTextFir}:${message.message_type == '1' ? message.room_info : message.room_demand}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(10),
Text(
"就餐时间:${message.ddateStr}",
"${subTitleTextSec}:${message.message_type != '12' ? message.ddateStr : message.cdateStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(28)),
... ... @@ -129,7 +143,10 @@ class MessageItem extends StatelessWidget {
width: 152,
height: 50,
fontSize: 30,
content: message.message_type == "10" ? "立即处理" : "立即查看",
content: message.message_type == "10" ||
message.message_type == "12"
? "立即处理"
: "立即查看",
state: 1,
onPress: () async {
messageDialogModel.removeMessage(message.id);
... ... @@ -172,6 +189,8 @@ class MessageItem extends StatelessWidget {
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "12") {
//在线买单消息 去处理 跳转在线买单处理页面
}
},
),
... ...
... ... @@ -13,10 +13,18 @@ class MessageModel extends ChangeNotifier {
List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
List<Message> unMessagesOrder = []; //未读提前点餐消息
PageState pageState = PageState.Loading;
// 未处理消息总数
int onlineTotal = 0; //在线消息
int inlineTotal = 0; //内部消息
int orderTotal = 0; //提前点餐
int checkTotal = 0; //在线买单
int onlineTotal = 0; //未处理在线消息数目
int inlineTotal = 0; //未处理内部消息数目
int orderTotal = 0; //未处理提前点餐消息数目
initData() {
messages = []; //消息
unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
unMessagesOrder = []; //未读提前点餐消息
pageState = PageState.Loading;
}
//获取消息
getMessages(BuildContext context, Map<String, String> params,
... ... @@ -100,6 +108,7 @@ 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());
checkTotal = int.parse(baseResp.data['check_total'].toString());
notifyListeners();
}
}
... ...