Commit 03feb89607a3ccfe26851b827592ec80a950f79d

Authored by wdn127929
1 parent ec7f6f44

消息中心UI

... ... @@ -12,14 +12,14 @@ if (flutterRoot == null) {
}
def flutterVersionCode = "361"
def flutterVersionCode = "370"
if (flutterVersionCode == null) {
flutterVersionCode = '361'
flutterVersionCode = '370'
}
def flutterVersionName = "3.6.1"
def flutterVersionName = "3.7.0"
if (flutterVersionName == null) {
flutterVersionName = '3.6.1'
flutterVersionName = '3.7.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
... ...
... ... @@ -49,9 +49,9 @@ class Message {
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(ddate_long.toString()) * 1000);
ymd = dateTime.year.toString() +
"/" +
"-" +
Utils.addZeroNumber(dateTime.month) +
"/" +
"-" +
Utils.addZeroNumber(dateTime.day);
} else {
ymd = ddate.substring(0, 10);
... ... @@ -96,9 +96,9 @@ class Message {
return "刚刚";
} else {
return dateTime.year.toString() +
"/" +
"-" +
Utils.addZeroNumber(dateTime.month) +
"/" +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
Utils.addZeroNumber(dateTime.hour) +
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/message.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/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MessageItemF extends StatelessWidget {
final Message message;
final bool isTreated;
MessageItemF(this.message, {this.isTreated = false});
@override
Widget build(BuildContext context) {
// TODO: implement build
Color textColor =
isTreated ? MyColours.color_999999 : MyColours.color_353535;
String titleText = "";
String subTitleTextFir = "";
String subTitleTextSec = "";
String attr = '';
Color bgcolor = MyColours.color_438E93;
String btnname = 'online_go';
if (message.message_type == "10") {
titleText = "在线\n预订";
subTitleTextFir = '包间需求';
subTitleTextSec = '就餐时间';
} else if (message.message_type == "11") {
titleText = "取消\n预订";
bgcolor = MyColours.color_999999;
btnname = 'cancel_go';
} else if (message.message_type == "1") {
titleText = "提前\n点餐";
subTitleTextFir = '桌位信息';
subTitleTextSec = '就餐时间';
bgcolor = MyColours.color_F78D94;
btnname = 'order_go';
} else if (message.message_type == "12") {
titleText = "在线\n买单";
subTitleTextFir = '桌位信息';
subTitleTextSec = '申请时间';
bgcolor = MyColours.color_F2995F;
btnname = 'online_order_go';
} else if (message.message_type == "13") {
titleText = "买单\n通知";
subTitleTextFir = '桌位信息';
subTitleTextSec = '申请时间';
} else if (message.message_type == "14") {
titleText = "发票\n申请";
subTitleTextFir = '桌位信息';
subTitleTextSec = '申请时间';
} else if (message.message_type == "店内消息") {
titleText = "店内\n消息";
bgcolor = MyColours.color_5F7292;
btnname = 'store_info_go';
}
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
return GestureDetector(
onTap: () async {
//true已处理跳转 false未处理列表不需要点击事件
if (isTreated) {
if (message.message_type == "10") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString(), message.uid);
} else if (message.message_type == "1") {
NavigatorUtil.goHasOrderFoodPage(context, rid: message.rid);
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString(), message.uid);
} else if (message.message_type == "12") {
//在线买单消息查看
NavigatorUtil.goOnlineCheckDetailPage(context,
rid: '${message.rid}');
} else if (message.message_type == "13") {
//买单通知,跳转至买单详情查看
NavigatorUtil.goOnlineCheckDetailPage(context,
rid: '${message.rid}');
} else if (message.message_type == "14") {
//发票详情页面跳转
NavigatorUtil.goInvoiceDetailPage(context, rid: '${message.rid}');
}
} else {
messageDialogModel.removeMessage(message.id);
//message_type:10 跳转在线预订 11 取消订单 1 提前点餐
if (message.message_type == "10") {
NavigatorUtil.goHandleOnlinePage(
context, message.rid.toString(), message.id);
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString(), message.uid);
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1" ? "is_read" : "is_handle"
};
await messageDialogModel.setMessageStatus(context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "1") {
//提前点餐
NavigatorUtil.goHasOrderFoodPage(context, rid: message.rid);
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1" ? "is_read" : "is_handle"
};
await messageDialogModel.setMessageStatus(context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if ('${message.message_type}' == "12") {
//在线买单消息 去处理 跳转在线买单处理页面
NavigatorUtil.goOnlineCheckEditPage(context,
rid: '${message.rid}', mid: message.id);
} else if ('${message.message_type}' == "13") {
//在线买单消息 去查看 跳转在线买单详情页面
NavigatorUtil.goOnlineCheckDetailPage(context,
rid: '${message.rid}');
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1" ? "is_read" : "is_handle"
};
await messageDialogModel.setMessageStatus(context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "14") {
//发票详情页面跳转
NavigatorUtil.goInvoiceDetailPage(context, rid: '${message.rid}');
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1" ? "is_read" : "is_handle"
};
await messageDialogModel.setMessageStatus(context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
}
}
},
child: Stack(
children: <Widget>[
Container(
margin: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(24 * 2),
vertical: ScreenUtil().setWidth(20)),
padding: EdgeInsets.only(
right: ScreenUtil().setWidth(32),
),
decoration: BoxDecoration(
border: Border.all(
width: ScreenUtil().setWidth(2), color: bgcolor),
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(18)))),
child: Row(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: ScreenUtil().setWidth(128),
height: ScreenUtil().setWidth(160),
alignment: Alignment.center,
decoration: BoxDecoration(
color: bgcolor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(16)),
bottomLeft:
Radius.circular(ScreenUtil().setWidth(16)))),
child: Transform.translate(
offset: Offset(0, 0.1 / 2), //1为 StrutStyle 的 leading的值
child: Text(
titleText,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(24),
),
strutStyle: StrutStyle(
forceStrutHeight: true, height: 1, leading: 0.1),
),
),
),
HEmptyView(34),
message.message_type == "10" || message.message_type == "12"
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(children: [
Padding(
padding: EdgeInsets.only(
right: ScreenUtil().setWidth(12)),
child: Text(
message.rnameStr,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
)),
attr == '' || attr == null
? Container(
margin: EdgeInsets.only(
right: ScreenUtil().setWidth(12)),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: attr == '沉睡'
? Color.fromRGBO(223, 33, 81, 1)
: attr == '活跃'
? Color.fromRGBO(
81, 170, 94, 1)
: attr == '流失'
? Color.fromRGBO(
109, 101, 248, 1)
: Color.fromRGBO(
239, 143, 49, 1),
borderRadius:
BorderRadius.circular(8)),
child: Text(
'活跃',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(24)),
),
)
: SizedBox(),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
border: Border.all(
width: ScreenUtil().setWidth(2),
color: MyColours.color_F2995F,
),
borderRadius: BorderRadius.circular(8)),
child: Text(
'biaoqianvipdsds',
style: TextStyle(
color: MyColours.color_F2995F,
fontSize: ScreenUtil().setSp(24)),
),
)
]),
VEmptyView(16),
Text(
'${message.ddateStr}',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
),
VEmptyView(8),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: bgcolor,
borderRadius: BorderRadius.circular(8)),
child: Text(
'${message.message_type == '1' ? message.room_info : message.room_demand}',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20)),
),
)
],
)
: SizedBox(),
message.message_type == "11" || message.message_type == "1"
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"预订日期:${message.ddateStr}",
style: TextStyle(
color: MyColours.color_BFC4D4,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(8),
message.room_demand == ''
? SizedBox()
: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: bgcolor,
borderRadius: BorderRadius.circular(8)),
child: Text(
'${message.room_demand}',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20)),
),
),
message.message_type == "1"
? SizedBox()
: Text(
true ? '取消操作人:顾客在线取消' : '取消操作人:方硕',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
)
],
)
: SizedBox(),
message.message_type == "店内消息"
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"请确认 2022-04-02 午餐 客人是否会如约到店!",
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(8),
Text(
"发起人:系统自动",
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
),
],
)
: SizedBox()
],
),
),
Positioned(
right: ScreenUtil().setWidth(24 * 2 + 16 * 2),
top: ScreenUtil().setWidth(28 + 24 * 2),
child: Offstage(
offstage: isTreated ? true : false,
child: InkWell(
onTap: () async {
messageDialogModel.removeMessage(message.id);
//message_type:10 跳转在线预订 11 取消订单 1 提前点餐
if (message.message_type == "10") {
NavigatorUtil.goHandleOnlinePage(
context, message.rid.toString(), message.id);
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString(), message.uid);
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1"
? "is_read"
: "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "1") {
//提前点餐
NavigatorUtil.goHasOrderFoodPage(context,
rid: message.rid);
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1"
? "is_read"
: "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if ('${message.message_type}' == "12") {
//在线买单消息 去处理 跳转在线买单处理页面
NavigatorUtil.goOnlineCheckEditPage(context,
rid: '${message.rid}', mid: message.id);
} else if ('${message.message_type}' == "13") {
//在线买单消息 去查看 跳转在线买单详情页面
NavigatorUtil.goOnlineCheckDetailPage(context,
rid: '${message.rid}');
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1"
? "is_read"
: "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "14") {
//发票详情页面跳转
NavigatorUtil.goInvoiceDetailPage(context,
rid: '${message.rid}');
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1"
? "is_read"
: "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
}
},
child: Image.asset(
Utils.getImgPath('$btnname'),
width: ScreenUtil().setWidth(24 * 2),
height: ScreenUtil().setWidth(24 * 2),
),
),
),
)
],
));
}
}
... ...
... ... @@ -2,6 +2,7 @@ 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/pages/message/message_untreated_page.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';
... ... @@ -26,8 +27,8 @@ class MessagePage extends StatefulWidget {
class MessagePageState extends State<MessagePage>
with TickerProviderStateMixin {
Color selectedColor = MyColours.color_199095;
Color unSelectedColor = MyColours.color_999999;
Color selectedColor = MyColours.color_ffffff;
Color unSelectedColor = MyColours.color_BFC4D4;
TabController tabController;
... ... @@ -38,7 +39,7 @@ class MessagePageState extends State<MessagePage>
@override
void initState() {
super.initState();
tabController = TabController(length: 3, vsync: this);
tabController = TabController(length: 2, vsync: this);
tabController.addListener(() {
//点击tab时或滑动tab回调一次
if (tabController.index.toDouble() == tabController.animation.value) {
... ... @@ -104,123 +105,151 @@ class MessagePageState extends State<MessagePage>
"消息中心",
showBack: false,
),
TabBar(
controller: tabController,
tabs: [
Tab(
child: SizedBox(
height: ScreenUtil().setWidth(60),
width: ScreenUtil().setWidth(144),
child: Stack(
children: [
Text(
"在线预订",
style: TextStyle(
color: tabController.index == 0
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold),
Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(24 * 2)),
child: TabBar(
controller: tabController,
isScrollable: true,
labelPadding: EdgeInsets.zero, //tabs控件之间的间距
tabs: [
Tab(
child: Container(
width: (ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(24 * 2 * 2)) /
2,
height: ScreenUtil().setWidth(36 * 2),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 0
? MyColours.color_438E93
: MyColours.color_BFC4D4),
left: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 0
? MyColours.color_438E93
: MyColours.color_BFC4D4),
top: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 0
? MyColours.color_438E93
: MyColours.color_BFC4D4),
right: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 0
? MyColours.color_438E93
: MyColours.color_BFC4D4)),
borderRadius: BorderRadius.only(
topLeft:
Radius.circular(ScreenUtil().setWidth(16)),
bottomLeft:
Radius.circular(ScreenUtil().setWidth(16))),
color: tabController.index == 0
? MyColours.color_438E93
: MyColours.color_ffffff),
alignment: Alignment.center,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("未处理",
style: TextStyle(
color: tabController.index == 0
? selectedColor
: unSelectedColor,
fontSize: tabController.index == 0
? ScreenUtil().setSp(32)
: ScreenUtil().setSp(24),
)),
Offstage(
offstage: false,
child: Container(
width: ScreenUtil().setWidth(36),
height: ScreenUtil().setWidth(36),
margin: EdgeInsets.only(
left: ScreenUtil().setWidth(20)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(36)),
color: true
? MyColours.color_E34D59
: MyColours.color_ffffff),
alignment: Alignment.center,
child: Text("5",
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(28),
)),
)),
],
),
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.onlineTotal > 0
? MyColours.color_fa5151
: MyColours.color_ffffff),
),
)
],
),
),
),
),
Tab(
child: SizedBox(
height: ScreenUtil().setWidth(60),
width: ScreenUtil().setWidth(144),
child: Stack(
children: [
Text(
"提前点餐",
style: TextStyle(
Tab(
child: Container(
width: (ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(24 * 2 * 2)) /
2,
height: ScreenUtil().setWidth(36 * 2),
decoration: BoxDecoration(
border: Border(
left: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 1
? MyColours.color_438E93
: MyColours.color_BFC4D4),
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 1
? MyColours.color_438E93
: MyColours.color_BFC4D4),
right: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 1
? MyColours.color_438E93
: MyColours.color_BFC4D4),
top: BorderSide(
width: ScreenUtil().setWidth(2),
color: tabController.index == 1
? MyColours.color_438E93
: MyColours.color_BFC4D4)),
borderRadius: BorderRadius.only(
topRight:
Radius.circular(ScreenUtil().setWidth(16)),
bottomRight:
Radius.circular(ScreenUtil().setWidth(16))),
color: tabController.index == 1
? 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.orderTotal > 0
? MyColours.color_fa5151
: MyColours.color_ffffff),
),
)
],
),
),
),
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),
),
)
],
? MyColours.color_438E93
: MyColours.color_ffffff),
alignment: Alignment.center,
child: Text(
"已处理",
style: TextStyle(
color: tabController.index == 1
? selectedColor
: unSelectedColor,
fontSize: tabController.index == 1
? ScreenUtil().setSp(32)
: ScreenUtil().setSp(24)),
)),
),
),
)
],
indicatorColor: MyColours.color_199095,
indicatorSize: TabBarIndicatorSize.label,
indicatorPadding: EdgeInsets.only(
left: ScreenUtil().setWidth(16),
right: ScreenUtil().setWidth(32)),
indicatorWeight: ScreenUtil().setWidth(6.0),
),
],
indicatorColor: Colors.transparent,
indicatorSize: TabBarIndicatorSize.tab,
// indicatorPadding: EdgeInsets.only(
// left: ScreenUtil().setWidth(16),
// right: ScreenUtil().setWidth(32)),
// indicatorWeight: ScreenUtil().setWidth(6.0),
)),
VEmptyView(11),
Expanded(
flex: 1,
child: TabBarView(controller: tabController, children: [
MessageOnlinePage(),
MessageUntreatedPage(),
MessageOrderPage(),
MessageOnlineCheckPage()
// MessageOnlineCheckPage()
]),
)
],
... ...
// 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_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/utils/event_bus.dart';
// import 'package:one_key/widgets/app_bar.dart';
// import 'package:one_key/widgets/v_empty_view.dart';
// import 'package:provider/provider.dart';
// import 'message_online_page.dart';
// import 'message_order_page.dart';
// /*
// 消息中心
// */
// class MessagePage extends StatefulWidget {
// @override
// State<StatefulWidget> createState() {
// // TODO: implement createState
// return new MessagePageState();
// }
// }
// class MessagePageState extends State<MessagePage>
// with TickerProviderStateMixin {
// Color selectedColor = MyColours.color_199095;
// Color unSelectedColor = MyColours.color_999999;
// TabController tabController;
// MessageModel messageModel;
// UserModel userModel;
// MessageDialogModel messageDialogModel;
// @override
// void initState() {
// super.initState();
// tabController = TabController(length: 3, vsync: this);
// tabController.addListener(() {
// //点击tab时或滑动tab回调一次
// if (tabController.index.toDouble() == tabController.animation.value) {
// getMessage(index: tabController.index);
// }
// });
// WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
// getMessage(index: 0);
// });
// //刷新未读数
// bus.on("refresh_untreated_num", (arg) {
// _getUnMsgNum();
// });
// //移除在线预订消息
// bus.on("remove_untreated_message", (args) {
// messageModel.removeUntreatedMessageByMid(args.toString());
// messageDialogModel.removeMessage(args.toString());
// });
// }
// //三种分类各自的未读消息数目
// _getUnMsgNum() async {
// if (mounted) {
// Map<String, String> params = {"sid": userModel.user.sellerid};
// 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);
// userModel = Provider.of<UserModel>(context, listen: false);
// messageDialogModel =
// Provider.of<MessageDialogModel>(context, listen: false);
// return Container(
// width: double.infinity,
// height: double.infinity,
// color: MyColours.color_ffffff,
// child: Column(
// children: <Widget>[
// MyAppBar(
// "消息中心",
// showBack: false,
// ),
// TabBar(
// controller: tabController,
// tabs: [
// Tab(
// child: SizedBox(
// height: ScreenUtil().setWidth(60),
// width: ScreenUtil().setWidth(144),
// child: Stack(
// children: [
// Text(
// "在线预订",
// style: TextStyle(
// color: tabController.index == 0
// ? 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.onlineTotal > 0
// ? MyColours.color_fa5151
// : MyColours.color_ffffff),
// ),
// )
// ],
// ),
// ),
// ),
// Tab(
// child: SizedBox(
// height: ScreenUtil().setWidth(60),
// width: ScreenUtil().setWidth(144),
// child: Stack(
// children: [
// Text(
// "提前点餐",
// style: TextStyle(
// color: tabController.index == 1
// ? 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.orderTotal > 0
// ? MyColours.color_fa5151
// : MyColours.color_ffffff),
// ),
// )
// ],
// ),
// ),
// ),
// 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,
// indicatorPadding: EdgeInsets.only(
// left: ScreenUtil().setWidth(16),
// right: ScreenUtil().setWidth(32)),
// indicatorWeight: ScreenUtil().setWidth(6.0),
// ),
// VEmptyView(11),
// Expanded(
// flex: 1,
// child: TabBarView(controller: tabController, children: [
// MessageOnlinePage(),
// MessageOrderPage(),
// MessageOnlineCheckPage()
// ]),
// )
// ],
// ),
// );
// }
// @override
// void dispose() {
// // TODO: implement dispose
// super.dispose();
// bus.off("refresh_untreated_num");
// bus.off("remove_untreated_message");
// }
// }
... ...
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/models/message.dart';
import 'package:one_key/pages/message/message_item_f.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 MessageUntreatedPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MessageUntreatedPageState();
}
}
class MessageUntreatedPageState extends State<MessageUntreatedPage> {
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();
// messageModel.pageState = PageState.Loading;
WidgetsBinding.instance.addPostFrameCallback((_) {
// getMessage();
// setState(() {
// messageModel.pageState = PageState.Loading;
// });
messageModel.pageState = PageState.Loading;
messageModel.notifyListeners();
});
}
@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在线预订
"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_ffffff,
child: Consumer<MessageModel>(
builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
offset = 0;
getMessage(showLoading: true);
},
emptyMsg: "暂时没有未处理的消息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return EasyRefresh.custom(
controller: _controller,
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
Message message = model.messages[index];
if (message.message_type == "10") {
// titleText = "在线预订";
} else if (message.message_type == "11") {
// titleText = "取消预订";
} else if (message.message_type == "1") {
// titleText = "提前点餐";
} else if (message.message_type == "12") {
// titleText = "在线买单";
} else if (message.message_type == "13") {
// titleText = "买单通知"; //没有
} else if (message.message_type == "14") {
// titleText = "发票申请"; //没有
}
return MessageItemF(
model.messages[index],
isTreated: selectedIndex == 1,
);
}, childCount: model.messages.length),
)
],
onRefresh: () async {
offset = 0;
getMessage(showLoading: false);
},
onLoad: () async {
offset++;
getMessage(showLoading: false);
},
);
}
},
),
);
}
}
... ...
import 'package:flutter/material.dart';
class MyColours {
static const Color color_5F7292 = Color(0xff5F7292);
static const Color color_F2995F = Color(0xffF2995F);
static const Color color_F78D94 = Color(0xffF78D94);
static const Color color_E7E7E7 = Color(0xffE7E7E7);
static const Color color_E34D59 = Color(0xffE34D59);
static const Color color_515151 = Color(0xff515151);
... ...