feat:修改鑫泓佳消息页面

This commit is contained in:
anfe 2024-04-29 10:45:49 +08:00
parent 5c1072e615
commit 4a18988613
7 changed files with 249 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -316,7 +316,7 @@ SPEC CHECKSUMS:
flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907
flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
fluwx: daa284756ce53442b3d0417ceeda66e981906811
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4

View File

@ -109,8 +109,8 @@ class F {
case Flavor.sky:
return 'https://lock.skychip.top';
case Flavor.xhj:
return 'https://lock.xhjcn.ltd';
// return 'https://pre.lock.star-lock.cn';
// return 'https://lock.xhjcn.ltd';
return 'https://pre.lock.star-lock.cn';
default:
throw Exception('flavor[$name] apiPrefix not found');
}

View File

@ -10,6 +10,7 @@ import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart';
import 'package:star_lock/mine/mall/lockMall_page.dart';
import 'package:star_lock/mine/message/messageList/messageList_page.dart';
import 'package:star_lock/mine/message/messageList/messageList_xhj_page.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/submitBtn.dart';
@ -64,7 +65,7 @@ class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
pageView(
widget: SafeArea(
bottom: false,
child: MessageListPage(
child: MessageListXHJPage(
showAppBar: false,
),
),

View File

@ -0,0 +1,235 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/EasyRefreshTool.dart';
import '../../../tools/dateTool.dart';
import '../../../tools/showTipView.dart';
import '../../../tools/storage.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
import 'messageList_entity.dart';
import 'messageList_logic.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
class MessageListXHJPage extends StatefulWidget {
MessageListXHJPage({Key? key, this.showAppBar = true}) : super(key: key);
bool showAppBar;
@override
State<MessageListXHJPage> createState() => _MessageListXHJPageState();
}
class _MessageListXHJPageState extends State<MessageListXHJPage>
with TickerProviderStateMixin {
final logic = Get.put(MessageListLogic());
final state = Get.find<MessageListLogic>().state;
void getHttpData() {
logic.messageListDataRequest().then((MessageListEntity value) {
setState(() {});
});
}
@override
void initState() {
super.initState();
getHttpData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: widget.showAppBar
? TitleAppBar(
barTitle: TranslationLoader.lanKeys!.message!.tr,
haveBack: true,
actionsList: [
TextButton(
child: Text(
"清空".tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog("是否清空?".tr,
() async {
logic.deletAllMessageDataRequest();
});
} else {
logic.showToast("演示模式".tr);
}
},
),
],
backgroundColor: AppColors.mainColor)
: null,
body: Column(
children: [
Container(
width: 1.sw,
height: 0.2.sw,
margin: EdgeInsets.symmetric(horizontal: 15.w),
padding: EdgeInsets.symmetric(horizontal: 25.w),
decoration: BoxDecoration(
image: const DecorationImage(
image: AssetImage('images/xhj_main_bg.jpg'),
fit: BoxFit.cover,
),
borderRadius: BorderRadius.circular(20.r),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
offset: const Offset(0, 0),
blurRadius: 10.r,
spreadRadius: 0,
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'智能分析',
style: TextStyle(
color: AppColors.blackColor,
fontSize: 28.sp,
fontWeight: FontWeight.w600,
),
),
Text(
'精准识别设备事件,过滤无效信息',
style: TextStyle(
color: AppColors.blackColor.withOpacity(0.6),
fontSize: 20.sp,
fontWeight: FontWeight.w600,
),
),
],
),
),
Expanded(
child: EasyRefreshTool(onRefresh: () {
logic.pageNo = 1;
getHttpData();
}, onLoad: () {
getHttpData();
}, child: Obx(() {
return state.itemDataList.isEmpty
? NoData()
: SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: state.itemDataList.length,
padding: EdgeInsets.only(top: 20.h),
itemBuilder: (c, index) {
MessageItemEntity messageItemEntity =
state.itemDataList[index];
return Slidable(
key: ValueKey(messageItemEntity.id),
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
SlidableAction(
onPressed: (BuildContext context) {
logic.deletMessageDataRequest(
messageItemEntity.id!, () {
logic.pageNo = 1;
getHttpData();
});
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除'.tr,
padding:
EdgeInsets.only(left: 5.w, right: 5.w),
),
],
),
child: _messageListItem(messageItemEntity, () {
Get.toNamed(Routers.messageDetailPage,
arguments: {
"messageItemEntity": messageItemEntity
});
}),
);
}),
);
})),
),
],
),
);
}
Widget _messageListItem(
MessageItemEntity messageItemEntity, Function() action) {
bool isNotRead = messageItemEntity.readAt! == 0;
return GestureDetector(
onTap: action,
child: Container(
margin: EdgeInsets.symmetric(vertical: 12.h, horizontal: 15.w),
padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20.w),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
offset: const Offset(0, 0),
blurRadius: 10.r,
spreadRadius: 0,
),
],
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.asset(
isNotRead ? 'images/news_not_read.png' : 'images/news_read.png',
width: 48.r,
height: 48.r),
SizedBox(width: 15.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
messageItemEntity.data!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.start,
style: TextStyle(
fontSize: 22.sp,
color: messageItemEntity.readAt! == 0
? AppColors.blackColor
: AppColors.placeholderTextColor),
),
SizedBox(
height: 5.h,
),
Text(
DateTool().dateToYMDHNString(
messageItemEntity.createdAt!.toString()),
style: TextStyle(
fontSize: 18.sp,
color: messageItemEntity.readAt! == 0
? AppColors.blackColor
: AppColors.placeholderTextColor)),
],
),
),
],
),
),
);
}
}

View File

@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/flavors.dart';
class TitleAppBar extends AppBar {
@override
@ -38,6 +40,8 @@ class TitleAppBar extends AppBar {
class _TitleAppBarState extends State<TitleAppBar> {
@override
Widget build(BuildContext context) {
Color defaultColor = F.sw(
defaultCall: () => Colors.white, xhjCall: () => AppColors.blackColor);
return AppBar(
elevation: 0,
leading: widget.haveOtherLeftWidget!
@ -45,7 +49,7 @@ class _TitleAppBarState extends State<TitleAppBar> {
: (widget.haveBack ?? false
? IconButton(
icon: Icon(Icons.arrow_back_ios,
color: widget.iconColor ?? Colors.white),
color: widget.iconColor ?? defaultColor),
onPressed: () {
if (widget.backAction != null) {
widget.backAction!();
@ -57,12 +61,14 @@ class _TitleAppBarState extends State<TitleAppBar> {
}
})
: Container()),
backgroundColor: widget.backgroundColor ?? Colors.white,
backgroundColor: F.sw(
defaultCall: () => widget.backgroundColor ?? defaultColor,
xhjCall: () => Colors.white),
title: widget.haveTitleWidget!
? widget.titleWidget
: Text(widget.barTitle ?? '',
style: TextStyle(
color: widget.titleColor ?? Colors.white,
color: widget.titleColor ?? defaultColor,
fontSize: 28.sp,
fontWeight: FontWeight.w600)),
centerTitle: true,