255 lines
10 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/newSMSTemplate_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_logic.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_state.dart';
import 'package:star_lock/tools/EasyRefreshTool.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/showTipView.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
class CustomSMSTemplateListPage extends StatefulWidget {
const CustomSMSTemplateListPage({Key? key}) : super(key: key);
@override
State<CustomSMSTemplateListPage> createState() =>
_CustomSMSTemplateListPageState();
}
class _CustomSMSTemplateListPageState extends State<CustomSMSTemplateListPage> {
final CustomSMSTemplateListLogic logic =
Get.put(CustomSMSTemplateListLogic());
final CustomSMSTemplateListState state =
Get.find<CustomSMSTemplateListLogic>().state;
@override
void initState() {
super.initState();
logic.getSMSTemplateListRequest(isRefresh: true);
logic.getVipStatus();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
2023-07-28 17:14:11 +08:00
appBar: TitleAppBar(
barTitle: state.channelType.value == 1 ? '自定义短信模版'.tr : '自定义邮件模版'.tr,
2023-07-28 17:14:11 +08:00
haveBack: true,
backgroundColor: AppColors.mainColor),
body: EasyRefreshTool(
onRefresh: () {
logic.getSMSTemplateListRequest(isRefresh: true);
},
onLoad: () {
logic.getSMSTemplateListRequest(isRefresh: false);
},
child: Column(
children: <Widget>[
Obx(() => Visibility(
child: _topTipWidget(),
visible: !state.isVip.value,
)),
Expanded(child: Obx(buildMainUI)),
SubmitBtn(
2024-08-02 13:52:37 +08:00
btnName: '新建模板'.tr,
borderRadius: 20.w,
margin: EdgeInsets.only(
left: 30.w, right: 30.w, top: 30.w, bottom: 30.w),
padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
onClick: () async {
final TemplateData templateData = TemplateData();
templateData.channelType = state.channelType.value;
templateData.isUpdate = false;
templateData.templateName =
templateData.templateType == 1 ? '电子钥匙'.tr : '密码'.tr;
final result = await Get.toNamed(Routers.newSMSTemplatePage,
arguments: {
'currentTemplate': templateData,
'isUpdate': false
});
if (result != null) {
logic.getSMSTemplateListRequest(isRefresh: true);
}
}),
SizedBox(
height: 40.h,
)
],
),
),
);
}
2023-07-28 17:14:11 +08:00
Widget _topTipWidget() {
return Container(
2023-07-28 17:14:11 +08:00
margin: EdgeInsets.only(top: 20.w, left: 20.w, right: 20.w),
padding:
EdgeInsets.only(top: 20.h, left: 20.w, right: 20.w, bottom: 20.h),
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(5)),
child: Column(
children: <Widget>[
2023-07-28 17:14:11 +08:00
Text(
2024-08-02 13:52:37 +08:00
'你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人'.tr,
2023-07-28 17:14:11 +08:00
style: TextStyle(
fontSize: 22.sp,
color: AppColors.blackColor,
fontWeight: FontWeight.w600),
),
SizedBox(
height: 15.h,
),
Container(
padding: EdgeInsets.only(
top: 15.h, left: 15.w, right: 15.w, bottom: 15.h),
decoration: BoxDecoration(
color: const Color(0xFFFbF9EC),
borderRadius: BorderRadius.circular(10.h)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
SizedBox(
2023-07-28 17:14:11 +08:00
width: 1.sw - 15.w * 2 - 40.w * 2 - 140.w,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
2023-07-28 17:14:11 +08:00
Text(
2024-08-01 18:54:32 +08:00
'${'当前状态'.tr}${'试用中'.tr}',
2023-07-28 17:14:11 +08:00
style: TextStyle(
fontSize: 20.sp, fontWeight: FontWeight.w600),
),
2024-08-02 13:52:37 +08:00
Text('高级功能仅能用于你自己的锁'.tr,
2023-07-28 17:14:11 +08:00
style: TextStyle(
fontSize: 20.sp, fontWeight: FontWeight.w600))
],
),
),
2023-07-28 17:14:11 +08:00
GestureDetector(
onTap: () {
Navigator.pushNamed(
context, Routers.valueAddedServicesHighFunctionPage);
},
child: Container(
width: 100.w,
height: 50.h,
decoration: BoxDecoration(
color: const Color(0xFFCAB68D),
borderRadius: BorderRadius.circular(35.h)),
child: Center(
child: Text(
2024-08-02 13:52:37 +08:00
'去开通'.tr,
2023-07-28 17:14:11 +08:00
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white, fontSize: 20.sp)))),
),
2023-07-28 17:14:11 +08:00
],
),
)
],
));
}
Widget buildMainUI() {
return state.smsTemplateList.isNotEmpty
? SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: state.smsTemplateList.length,
itemBuilder: (BuildContext c, int index) {
final CustomSMSTemplateItem itemData =
state.smsTemplateList[index];
return Slidable(
key: ValueKey(itemData.id),
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: <Widget>[
SlidableAction(
onPressed: (BuildContext context) {
ShowTipView()
.showIosTipWithContentDialog('是否删除?'.tr, () {
logic.deleteSMSTemplateRequest(
id: itemData.id ?? 0);
});
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除'.tr,
padding: EdgeInsets.only(left: 5.w, right: 5.w),
),
],
),
child: _valueAddedServicesListSMSTemplateItem(itemData));
}),
)
: NoData();
}
2023-07-28 17:14:11 +08:00
Widget _valueAddedServicesListSMSTemplateItem(
CustomSMSTemplateItem itemData) {
return GestureDetector(
onTap: () async {
final TemplateData templateData = TemplateData();
templateData.name = itemData.name;
templateData.regards = itemData.regards;
templateData.tips = itemData.tips;
templateData.id = itemData.id;
templateData.template = itemData.template;
templateData.templateType = itemData.templateType;
templateData.templateName = templateData.templateName == 1 ? '电子钥匙'.tr : '密码'.tr;
templateData.channelType = itemData.channelType;
templateData.isUpdate = true;
final result = await Get.toNamed(Routers.newSMSTemplatePage,
arguments: {'currentTemplate': templateData, 'isUpdate': true});
if (result != null) {
logic.getSMSTemplateListRequest(isRefresh: true);
}
},
child: Container(
margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w),
2023-07-28 17:14:11 +08:00
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
2023-07-28 17:14:11 +08:00
padding: EdgeInsets.only(left: 30.h, top: 30.h, bottom: 20.h),
child: Text(
itemData.name ?? '',
2023-07-28 17:14:11 +08:00
style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w600),
),
),
Container(
width: 1.sw - 20.w * 2 - 30.w * 2,
margin: EdgeInsets.only(left: 25.w, right: 25.w, bottom: 25.h),
decoration: BoxDecoration(
color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(10.h),
),
child: Padding(
padding: EdgeInsets.only(left: 20.w, top: 20.h, bottom: 20.h),
child: RichText(
text: TextSpan(
children: itemData.templateType == 1
? logic.buildElectronicKeySpan(templateData: itemData)
: logic.buildPasswordSpan(templateData: itemData),
),
),
),
),
],
),
),
);
}
}