parent
32d9d1b0b3
commit
39260008a0
@ -0,0 +1,91 @@
|
||||
import 'package:akuCommunity/pages/message_center_page/system_message/system_message_page.dart';
|
||||
import 'package:akuCommunity/provider/app_provider.dart';
|
||||
import 'package:akuCommunity/widget/bee_scaffold.dart';
|
||||
import 'package:akuCommunity/widget/buttons/column_action_button.dart';
|
||||
import 'package:badges/badges.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:akuCommunity/utils/headers.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class MessageCenterPage extends StatefulWidget {
|
||||
MessageCenterPage({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_MessageCenterPageState createState() => _MessageCenterPageState();
|
||||
}
|
||||
|
||||
class _MessageCenterPageState extends State<MessageCenterPage> {
|
||||
Widget _buildCard({
|
||||
String path,
|
||||
String title,
|
||||
String content,
|
||||
int count,
|
||||
VoidCallback onTap,
|
||||
}) {
|
||||
return InkWell(
|
||||
onTap: onTap,
|
||||
child: Container(
|
||||
padding: EdgeInsets.fromLTRB(28.w, 32.w, 28.w, 20.w),
|
||||
child: Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 90.w,
|
||||
height: 90.w,
|
||||
child: Badge(
|
||||
child: Image.asset(path),
|
||||
showBadge: count != 0,
|
||||
elevation: 0,
|
||||
position: BadgePosition.topEnd(top: 8.w, end: 8.w),
|
||||
)),
|
||||
15.w.widthBox,
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
title.text.black.bold.size(32.sp).make(),
|
||||
5.w.heightBox,
|
||||
content.text.black.size(28.sp).make(),
|
||||
],
|
||||
).expand()
|
||||
],
|
||||
),
|
||||
),
|
||||
).material(color: Colors.transparent);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
AppProvider appProvider = Provider.of<AppProvider>(context);
|
||||
return BeeScaffold(
|
||||
title: '消息中心',
|
||||
actions: [
|
||||
MaterialButton(
|
||||
onPressed: () {},
|
||||
child: '全部已读'.text.size(28.sp).black.make(),
|
||||
padding: EdgeInsets.symmetric(horizontal: 32.w),
|
||||
),
|
||||
],
|
||||
body: Column(
|
||||
children: [
|
||||
_buildCard(
|
||||
path: R.ASSETS_ICONS_SYSTEM_NOTICE_PNG,
|
||||
title: '系统通知',
|
||||
content: appProvider.messageCenterModel.sysTitle,
|
||||
count: appProvider.messageCenterModel.sysCount,
|
||||
onTap: SystemMessagePage().to,
|
||||
),
|
||||
// _buildCard(
|
||||
// path: R.ASSETS_ICONS_COMMENT_NOTICE_PNG,
|
||||
// title: '评论通知',
|
||||
// content: '',
|
||||
// count: 0,
|
||||
// ),
|
||||
// _buildCard(
|
||||
// path: R.ASSETS_ICONS_SHOP_NOTICE_PNG,
|
||||
// title: '商城通知',
|
||||
// content: '',
|
||||
// count: 0,
|
||||
// )
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
import 'package:akuCommunity/base/base_style.dart';
|
||||
import 'package:akuCommunity/constants/api.dart';
|
||||
import 'package:akuCommunity/model/message/system_message_model.dart';
|
||||
import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart';
|
||||
import 'package:akuCommunity/utils/bee_map.dart';
|
||||
import 'package:akuCommunity/widget/bee_divider.dart';
|
||||
import 'package:akuCommunity/widget/bee_scaffold.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyrefresh/easy_refresh.dart';
|
||||
import 'package:akuCommunity/utils/headers.dart';
|
||||
|
||||
class SystemMessagePage extends StatefulWidget {
|
||||
SystemMessagePage({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SystemMessagePageState createState() => _SystemMessagePageState();
|
||||
}
|
||||
|
||||
class _SystemMessagePageState extends State<SystemMessagePage> {
|
||||
EasyRefreshController _refreshController;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_refreshController = EasyRefreshController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_refreshController?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Widget _buildCard(SystemMessageModel model) {
|
||||
return InkWell(
|
||||
onTap: () {},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: kForeGroundColor,
|
||||
borderRadius: BorderRadius.circular(4.w),
|
||||
),
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.fromLTRB(30.w, 20.w, 20.w, 14.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
'系统通知'.text.black.bold.size(32.sp).make(),
|
||||
Spacer(),
|
||||
BeeMap.messageRead[model.status].text
|
||||
.color(BeeMap.messageIsRead[model.status]
|
||||
? Color(0xFF999999)
|
||||
: Colors.red)
|
||||
.size(32.sp)
|
||||
.make()
|
||||
],
|
||||
),
|
||||
5.w.heightBox,
|
||||
model.title.text.black
|
||||
.size(28.sp)
|
||||
.maxLines(1)
|
||||
.isIntrinsic
|
||||
.ellipsis
|
||||
.make(),
|
||||
5.w.heightBox,
|
||||
model.content.text.black
|
||||
.size(28.sp)
|
||||
.maxLines(1)
|
||||
.overflow(TextOverflow.ellipsis)
|
||||
.isIntrinsic
|
||||
.make(),
|
||||
30.w.heightBox,
|
||||
BeeDivider.horizontal(),
|
||||
14.w.heightBox,
|
||||
Row(
|
||||
children: [
|
||||
'查看详情'.text.black.size(28.sp).make(),
|
||||
Spacer(),
|
||||
Icon(
|
||||
CupertinoIcons.chevron_forward,
|
||||
size: 28.w,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
).material();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BeeScaffold(
|
||||
title: '系统通知',
|
||||
body: BeeListView(
|
||||
path: API.message.sysMessageList,
|
||||
controller: _refreshController,
|
||||
convert: (models) {
|
||||
return models.tableList
|
||||
.map((e) => SystemMessageModel.fromJson(e))
|
||||
.toList();
|
||||
},
|
||||
builder: (items) {
|
||||
return ListView.separated(
|
||||
padding: EdgeInsets.all(32.w),
|
||||
itemBuilder: (context, index) {
|
||||
return _buildCard(items[index]);
|
||||
},
|
||||
separatorBuilder: (_, __) {
|
||||
return 32.w.heightBox;
|
||||
},
|
||||
itemCount: items.length);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
import 'package:akuCommunity/constants/api.dart';
|
||||
import 'package:akuCommunity/model/message/system_message_model.dart';
|
||||
import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart';
|
||||
import 'package:akuCommunity/utils/network/net_util.dart';
|
||||
import 'package:akuCommunity/widget/bee_divider.dart';
|
||||
import 'package:akuCommunity/widget/bee_scaffold.dart';
|
||||
import 'package:badges/badges.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyrefresh/easy_refresh.dart';
|
||||
import 'package:akuCommunity/utils/headers.dart';
|
||||
|
||||
class MessageCenterPage extends StatefulWidget {
|
||||
MessageCenterPage({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_MessageCenterPageState createState() => _MessageCenterPageState();
|
||||
}
|
||||
|
||||
class _MessageCenterPageState extends State<MessageCenterPage> {
|
||||
EasyRefreshController _refreshController;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_refreshController = EasyRefreshController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_refreshController?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Map<int, bool> isRead = {
|
||||
1: false,
|
||||
3: true,
|
||||
};
|
||||
Widget _buildCard({
|
||||
String path,
|
||||
String title,
|
||||
SystemMessageModel model,
|
||||
}) {
|
||||
return InkWell(
|
||||
onTap: () async {
|
||||
await NetUtil().dio.get(API.message.readMessage);
|
||||
|
||||
},
|
||||
child: Container(
|
||||
padding: EdgeInsets.fromLTRB(28.w, 32.w, 28.w, 20.w),
|
||||
child: Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 90.w,
|
||||
height: 90.w,
|
||||
child: Badge(
|
||||
child: Image.asset(path),
|
||||
showBadge: !isRead[model.status],
|
||||
elevation: 0,
|
||||
position: BadgePosition.topEnd(top: 8.w, end: 8.w),
|
||||
)),
|
||||
15.w.widthBox,
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
title.text.black.bold.size(32.sp).make(),
|
||||
5.w.heightBox,
|
||||
model.content.text.black.size(28.sp).make(),
|
||||
],
|
||||
).expand()
|
||||
],
|
||||
),
|
||||
),
|
||||
).material(color: Colors.transparent);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BeeScaffold(
|
||||
title: '消息中心',
|
||||
body: BeeListView(
|
||||
path: API.message.sysMessageList,
|
||||
controller: _refreshController,
|
||||
convert: (models) {
|
||||
return models.tableList
|
||||
.map((e) => SystemMessageModel.fromJson(e))
|
||||
.toList();
|
||||
},
|
||||
builder: (items) {
|
||||
return ListView.separated(
|
||||
itemBuilder: (context, index) {
|
||||
return _buildCard(
|
||||
path: R.ASSETS_ICONS_SYSTEM_NOTICE_PNG,
|
||||
title: '系统通知',
|
||||
model: items[index],
|
||||
);
|
||||
},
|
||||
separatorBuilder: (_, __) {
|
||||
return BeeDivider.horizontal(
|
||||
indent: 28.w,
|
||||
endIndent: 28.w,
|
||||
);
|
||||
},
|
||||
itemCount: items.length);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
// Flutter imports:
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Project imports:
|
||||
import 'package:akuCommunity/routers/page_routers.dart';
|
||||
import 'package:akuCommunity/utils/headers.dart';
|
||||
import 'package:akuCommunity/widget/bee_scaffold.dart';
|
||||
|
||||
class SystemDetailsPage extends StatelessWidget {
|
||||
final Bundle bundle;
|
||||
SystemDetailsPage({Key key, this.bundle}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BeeScaffold(
|
||||
title: '查看详情',
|
||||
body: Container(
|
||||
color: Colors.white,
|
||||
child: ListView(
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.only(
|
||||
top: 42.w,
|
||||
left: 34.w,
|
||||
right: 44.w,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'系统通知',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 32.sp,
|
||||
color: Color(0xff333333),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5.w),
|
||||
Text(
|
||||
bundle.getMap('detailsMap')['type'],
|
||||
style: TextStyle(
|
||||
fontSize: 28.sp,
|
||||
color: Color(0xff333333),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 110.w),
|
||||
Text(
|
||||
bundle.getMap('detailsMap')['content'],
|
||||
style: TextStyle(
|
||||
fontSize: 28.sp,
|
||||
color: Color(0xff333333),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,187 +0,0 @@
|
||||
// Flutter imports:
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:flutter_icons/flutter_icons.dart';
|
||||
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
||||
import 'package:velocity_x/velocity_x.dart';
|
||||
|
||||
// Project imports:
|
||||
import 'package:akuCommunity/pages/message_center_page/system_message_page/system_details_page/system_details_page.dart';
|
||||
import 'package:akuCommunity/routers/page_routers.dart';
|
||||
import 'package:akuCommunity/utils/headers.dart';
|
||||
import 'package:akuCommunity/widget/bee_scaffold.dart';
|
||||
|
||||
class SystemMessagePage extends StatefulWidget {
|
||||
SystemMessagePage({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SystemMessagePageState createState() => _SystemMessagePageState();
|
||||
}
|
||||
|
||||
class _SystemMessagePageState extends State<SystemMessagePage> {
|
||||
RefreshController _refreshController =
|
||||
RefreshController(initialRefresh: false);
|
||||
List<Map<String, dynamic>> _listNotice = [
|
||||
{'status': '已读', 'type': '业主信息审核:未通过', 'content': '您的信息有错误,请您重新填写'},
|
||||
{
|
||||
'status': '已读',
|
||||
'type': '物品出门:未通过',
|
||||
'content': '当天装修人员有些多,是否考虑换一是否考虑换一是否考虑换一…'
|
||||
},
|
||||
{
|
||||
'status': '已读',
|
||||
'type': '报修申请:未通过',
|
||||
'content': '您的地址填写的不够详细,装修员工装修员工装修员工…'
|
||||
},
|
||||
];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void _onRefresh() async {
|
||||
await Future.delayed(Duration(milliseconds: 1500));
|
||||
|
||||
_refreshController.refreshCompleted();
|
||||
}
|
||||
|
||||
void _onLoading() async {
|
||||
await Future.delayed(Duration(milliseconds: 1500));
|
||||
|
||||
if (mounted) setState(() {});
|
||||
_refreshController.loadComplete();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_refreshController.dispose();
|
||||
}
|
||||
|
||||
InkWell _inkWellLook(String type, String content) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
SystemDetailsPage(
|
||||
bundle: Bundle()
|
||||
..putMap('detailsMap', {'type': type, 'content': content}),
|
||||
).to;
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'查看详情',
|
||||
style: TextStyle(fontSize: 28.sp, color: Color(0xff333333)),
|
||||
),
|
||||
Icon(AntDesign.right, size: 40.sp),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Container _containerCard(String status, String type, String content) {
|
||||
return Container(
|
||||
margin: EdgeInsets.only(
|
||||
top: 32.w,
|
||||
left: 32.w,
|
||||
right: 32.w,
|
||||
),
|
||||
padding:
|
||||
EdgeInsets.only(top: 21.w, bottom: 14.w, left: 30.w, right: 20.w),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xffffffff),
|
||||
borderRadius: BorderRadius.all(Radius.circular(4)),
|
||||
boxShadow: <BoxShadow>[
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.1),
|
||||
offset: Offset(1, 1),
|
||||
blurRadius: 10.0),
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.only(left: 2.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'系统通知',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 32.sp,
|
||||
color: Color(0xff333333)),
|
||||
),
|
||||
Text(
|
||||
status,
|
||||
style:
|
||||
TextStyle(fontSize: 32.sp, color: Color(0xff999999)),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 5.w),
|
||||
Text(
|
||||
type,
|
||||
style: TextStyle(fontSize: 28.sp, color: Color(0xff333333)),
|
||||
),
|
||||
SizedBox(height: 8.w),
|
||||
Text(
|
||||
'驳回理由:$content',
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(fontSize: 28.sp, color: Color(0xff333333)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 30.w),
|
||||
Divider(),
|
||||
_inkWellLook(type, content),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BeeScaffold(
|
||||
title: '系统通知',
|
||||
actions: [
|
||||
InkWell(
|
||||
onTap: () {},
|
||||
child: Container(
|
||||
padding: EdgeInsets.fromLTRB(32.w, 28.w, 32.w, 20.w),
|
||||
child: '清空'.text.black.size(28.sp).make(),
|
||||
alignment: Alignment.center,
|
||||
),
|
||||
)
|
||||
],
|
||||
body: RefreshConfiguration(
|
||||
hideFooterWhenNotFull: true,
|
||||
child: SmartRefresher(
|
||||
controller: _refreshController,
|
||||
header: WaterDropHeader(),
|
||||
footer: ClassicFooter(),
|
||||
onRefresh: _onRefresh,
|
||||
onLoading: _onLoading,
|
||||
enablePullUp: true,
|
||||
child: ListView.builder(
|
||||
itemBuilder: (context, index) => _containerCard(
|
||||
_listNotice[index]['status'],
|
||||
_listNotice[index]['type'],
|
||||
_listNotice[index]['content'],
|
||||
),
|
||||
itemCount: _listNotice.length,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue