完成出个人设置剩下5个模块之外的所有的UI

This commit is contained in:
魏少阳 2023-07-21 19:31:01 +08:00
parent 89977d5a3e
commit 69a46812ed
56 changed files with 2767 additions and 77 deletions

View File

@ -202,6 +202,7 @@
"authorizedAdmin":"Authorized Admin",
"lockGroup":"Lock Group",
"transferSmartLock":"Transfer Smart Lock",
"transferGateway":"Transfer Gateway",
"multiLanguage":"Multi Language",
"lockScreen":"Lock Screen",
"closed":"Closed",
@ -291,5 +292,75 @@
"iphone":"Iphone",
"email":"Email",
"countryAndRegion":"Country And Region",
"selet":"Selet"
"selet":"Selet",
"businessCooperation":"Business Cooperation",
"officialWebsite":"Official Website",
"computerWebVersion":"Computer Web Version",
"hotelSystem":"Hotel System",
"manualWebVersion":"Manual Web Version",
"introduce":"Introduce",
"note":"Note",
"mail":"Mail",
"advancedFunction":"Advanced Function",
"pushMessage":"Push Message",
"recordsRetention":"Records Retention",
"smsBuyTip":"You can send the password and electronic key information to the recipient via SMS.",
"emailBuyTip":"You can send the password and electronic key information to the recipient by email.",
"currentRemainingQuantity":"Current Remaining Quantity",
"buy":"Buy",
"customSMSTemplate":"Custom SMS Template",
"customMailTemplate":"Custom Mail Template",
"record":"Record",
"buyRealNameTip":"When an electronic key is sent to the user, the user can be required to authenticate with his real name before unlocking to ensure that he is operating. The real-name authentication calls the interface of the national Public security system. For the payment function, please purchase the number of times before using it.",
"buyRealNameSeletYouWantBuyTip":"Please select the frequency of real name authentication you want",
"forTheFirstTime":"For the first time",
"onceDay":"once a day",
"weekOnce":"once a week",
"monthOnce":"once every month",
"currentState":"Current State",
"onTrial":"On Trial",
"haveNotOpened":"Have Not Opened",
"advancedFeaturesAndBenefitsContent":"Advanced Features And Benefits Content",
"smsTemplate":"SMS Template",
"emailTemplate":"Email Template",
"cardIssuingtool":"Card Issuing tool",
"titleForBuyingAdvancedFeatures":"Tips for buying advanced features",
"tipsForBuyingAdvancedFeatures":"More advanced features are under development, and if you need them, you are welcome to open the service based on the number of locks. Advanced features are only available for your own locks. If you are an authorized administrator, please contact the top administrator of the lock to open the service",
"freeTrial":"Free Trial",
"openNow":"Open Now",
"buySMS":"Buy SMS",
"buyMail":"Buy Mail",
"buyRealNameAuthenticationTimes":"Purchase Real Name Authentication Times",
"enablingAdvancedFeatures":"Enabling Advanced Features",
"chooseAPackage":"Choose A Package",
"modeOfPayment":"Mode Of Payment",
"alipay":"Alipay",
"goToPay":"Go To Pay",
"customTemplatesTip":"You can define the content of your own template for sending passwords or electronic key information to others",
"haveOpened":"Have Opened",
"unHaveOpenedTip1":"This function is an advanced function, please open it before using",
"unHaveOpenedTip2":"Advanced features are only available for your own locks",
"freeTrialKeywords":"Free Trial",
"goToTheOpen":"Go to the open",
"creatingANewTemplate":"Creating a new template",
"type":"Type",
"templateContent":"Template Content",
"preview":"Preview",
"hello":"Hello",
"yourRoomIs":"Your room is",
"roomName":"Room Name",
"theCodeToOpenTheDoorIs":"The code to open the door is",
"templateTip1":"After entering the password, please press the # key or other unlocking key to end. The password must be used at least once within 24 hours of being valid, otherwise it will be invalid",
"templateTip2":"You have received an electronic key, please use the applet to open the door.",
"templateTip3":"Or install an App to open the door。",
"expectedNotoCount":"The number of short creeds is expected to be generated",
"templateTip4": "Tip: When sending messages to other people, be critical",
"and":"And",
"willBeReplacedWithTheActualValue":"Will be replaced with the actual value",
"downloadLink":"Download Link"
}

View File

@ -203,7 +203,6 @@
"lockGroup":"lockGroup",
"transferSmartLock":"transferSmartLock",
"transferGateway":"transferGateway",
"multiLanguage":"multiLanguage",
"lockScreen":"lockScreen",
"closed":"closed",
@ -293,5 +292,75 @@
"iphone":"iphone",
"email":"email",
"countryAndRegion":"countryAndRegion",
"selet":"selet"
"selet":"selet",
"businessCooperation":"businessCooperation",
"officialWebsite":"officialWebsite",
"computerWebVersion":"computerWebVersion",
"hotelSystem":"hotelSystem",
"manualWebVersion":"manualWebVersion",
"introduce":"introduce",
"note":"note",
"mail":"mail",
"advancedFunction":"advancedFunction",
"pushMessage":"pushMessage",
"recordsRetention":"recordsRetention",
"smsBuyTip":"smsBuyTip",
"emailBuyTip":"emailBuyTip",
"currentRemainingQuantity":"currentRemainingQuantity",
"buy":"buy",
"customSMSTemplate":"customSMSTemplate",
"customMailTemplate":"customMailTemplate",
"record":"record",
"buyRealNameTip":"buyRealNameTip",
"buyRealNameSeletYouWantBuyTip":"buyRealNameSeletYouWantBuyTip",
"forTheFirstTime":"forTheFirstTime",
"onceDay":"onceDay",
"weekOnce":"weekOnce",
"monthOnce":"monthOnce",
"currentState":"currentState",
"onTrial":"onTrial",
"haveNotOpened":"haveNotOpened",
"advancedFeaturesAndBenefitsContent":"advancedFeaturesAndBenefitsContent",
"smsTemplate":"smsTemplate",
"emailTemplate":"emailTemplate",
"cardIssuingtool":"cardIssuingtool",
"titleForBuyingAdvancedFeatures":"titleForBuyingAdvancedFeatures",
"tipsForBuyingAdvancedFeatures":"tipsForBuyingAdvancedFeatures",
"freeTrial":"freeTrial",
"openNow":"openNow",
"buySMS":"buySMS",
"buyMail":"buyMail",
"buyRealNameAuthenticationTimes":"buyRealNameAuthenticationTimes",
"enablingAdvancedFeatures":"enablingAdvancedFeatures",
"chooseAPackage":"chooseAPackage",
"modeOfPayment":"modeOfPayment",
"alipay":"alipay",
"goToPay":"goToPay",
"customTemplatesTip":"customTemplatesTip",
"haveOpened":"haveOpened",
"unHaveOpenedTip1":"unHaveOpenedTip1",
"unHaveOpenedTip2":"unHaveOpenedTip2",
"freeTrialKeywords":"freeTrialKeywords",
"goToTheOpen":"goToTheOpen",
"creatingANewTemplate":"creatingANewTemplate",
"type":"type",
"templateContent":"templateContent",
"preview":"preview",
"hello":"hello",
"yourRoomIs":"yourRoomIs",
"roomName":"roomName",
"theCodeToOpenTheDoorIs":"theCodeToOpenTheDoorIs",
"templateTip1":"templateTip1",
"templateTip2":"templateTip2",
"templateTip3":"templateTip3",
"expectedNotoCount":"expectedNotoCount",
"templateTip4": "templateTip4",
"and":"and",
"willBeReplacedWithTheActualValue":"willBeReplacedWithTheActualValue",
"downloadLink":"downloadLink"
}

View File

@ -292,5 +292,78 @@
"iphone":"手机",
"email":"邮箱",
"countryAndRegion":"国家/地区",
"selet":"选择"
"selet":"选择",
"businessCooperation":"商务合作",
"officialWebsite":"官网",
"computerWebVersion":"电脑网页版",
"hotelSystem":"酒店系统",
"manualWebVersion":"说明书网页版",
"introduce":"介绍",
"note":"短信",
"mail":"邮件",
"advancedFunction":"高级功能",
"pushMessage":"推送",
"recordsRetention":"记录保存",
"smsBuyTip":"您可通过短信将密码、电子钥匙信息发给接收人。",
"emailBuyTip":"您可通过邮件将密码、电子钥匙信息发给接收人。",
"currentRemainingQuantity":"当前剩余数量",
"buy":"购买",
"customSMSTemplate":"自定义短信模版",
"customMailTemplate":"自定义邮件模版",
"record":"记录",
"buyRealNameTip":"给用户发送电子钥匙时,可以要求其开锁前先进行实名认证,以保证是他本人在操作。实名认证调用国家公安系统接口,为付费功能,请购买次数后再使用。",
"buyRealNameSeletYouWantBuyTip":"请选择你希望的实名认证频数",
"forTheFirstTime":"仅首次",
"onceDay":"每日一次",
"weekOnce":"每周一次",
"monthOnce":"每月一次",
"currentState":"当前状态",
"onTrial":"试用中",
"haveNotOpened":"未开通",
"advancedFeaturesAndBenefitsContent":"高级功能权益内容",
"smsTemplate":"短信模板",
"emailTemplate":"邮件模板",
"cardIssuingtool":"发卡工具",
"titleForBuyingAdvancedFeatures":"购买高级功能须知",
"tipsForBuyingAdvancedFeatures":"更多的高级功能正在开发中,如果您需要这些功能,欢迎根据锁的数量开通服务。高级功能仅能用于您自己的锁。如果您是授权管理员,请联系锁的最高管理员开通服务",
"freeTrial":"免费体验",
"openNow":"立即开通",
"buySMS":"购买短信",
"buyMail":"购买邮件",
"buyRealNameAuthenticationTimes":"购买实名认证次数",
"enablingAdvancedFeatures":"开通高级功能",
"chooseAPackage":"选择套餐",
"modeOfPayment":"支付方式",
"alipay":"支付宝",
"goToPay":"去支付",
"customTemplatesTip":"你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人",
"haveOpened":"已开通",
"unHaveOpenedTip1":"该功能是高级功能,请开通后再使用",
"unHaveOpenedTip2":"高级功能仅能用于你自己的锁",
"freeTrialKeywords":"免费试用",
"goToTheOpen":"去开通",
"creatingANewTemplate":"新建模板",
"type":"类型",
"templateContent":"模版内容",
"preview":"预览",
"hello":"你好",
"yourRoomIs":"您的房间是",
"roomName":"房间名",
"theCodeToOpenTheDoorIs":"开门密码是",
"templateTip1":"输入密码后请按#号键或其他开锁键结束。密码生效后24小时内至少要使用一次否则将失效",
"templateTip2":"你收到一把电子钥匙,请使用小程序开门。",
"templateTip3":"或安装App来开门。",
"expectedNotoCount":"预计产生短信条数",
"templateTip4": "提示:向其他人发送消息时,关键宇",
"and":"和",
"willBeReplacedWithTheActualValue":"将替换为实际值",
"downloadLink":"下载链接"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -11,6 +11,8 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
@ -19,6 +21,7 @@ DEPENDENCIES:
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
EXTERNAL SOURCES:
device_info_plus:
@ -33,6 +36,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
@ -41,6 +46,7 @@ SPEC CHECKSUMS:
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
PODFILE CHECKSUM: 663715e941f9adb426e33bf9376914006f9ea95b

View File

@ -327,6 +327,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
EXCLUDED_ARCHS = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -396,6 +397,7 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
EXCLUDED_ARCHS = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@ -451,6 +453,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
EXCLUDED_ARCHS = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;

View File

@ -83,9 +83,21 @@ import 'mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_pa
import 'mine/minePersonInfo/minePersonInfoEditName/minePersonInfoEditName_page.dart';
import 'mine/minePersonInfo/minePersonInfoResetPassword/minePersonInfoResetPassword_page.dart';
import 'mine/minePersonInfo/minePersonInfoSetSafetyProblem/minePersonInfoSetSafetyProblem_page.dart';
import 'mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart';
import 'mine/mineSet/hideInvalidUnlockPermissions/hideInvalidUnlockPermissions_page.dart';
import 'mine/mineSet/lockScreen/lockScreen_page.dart';
import 'mine/mine_page.dart';
import 'mine/supportStaff/supportStaff_page.dart';
import 'mine/valueAddedServices/valueAddedServices_page.dart';
import 'mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart';
import 'mine/valueAddedServices/valueAddedServicesBuyAndUseRecord/valueAddedServicesBuyAndUseRecordManage/valueAddedServicesBuyAndUseRecordManage_page.dart';
import 'mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart';
import 'mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesListEmailTemplate/valueAddedServicesListEmailTemplate_page.dart';
import 'mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_page.dart';
import 'mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart';
import 'mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedServicesNoteAndEmailDetail_page.dart';
import 'mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/valueAddedServicesListSMSTemplate_page.dart';
import 'starLockApplication.dart';
abstract class Routers {
@ -175,6 +187,20 @@ abstract class Routers {
static const valueAddedServicesPage = '/ValueAddedServicesPage';// -
static const abountPage = '/AbountPage';// -
static const valueAddedServicesNoteAndEmailDetailPage = '/ValueAddedServicesNoteAndEmailDetailPage';// -
static const valueAddedServicesRealNamePage = '/ValueAddedServicesRealNamePage';// -
static const valueAddedServicesHighFunctionPage = '/ValueAddedServicesHighFunctionPage';// -
static const valueAddedServicesBuyPage = '/ValueAddedServicesBuyPage';// -
static const valueAddedServicesListSMSTemplatePage = '/ValueAddedServicesListSMSTemplatePage';// -
static const valueAddedServicesAddSMSTemplatePage = '/valueAddedServicesAddSMSTemplatePage';// -
static const valueAddedServicesListEmailTemplatePage = '/ValueAddedServicesListEmailTemplatePage';// -
static const valueAddedServicesAddEmailTemplatePage = '/ValueAddedServicesAddEmailTemplatePage';// -
static const valueAddedServicesBuyAndUseRecordManagePage = '/ValueAddedServicesBuyAndUseRecordManagePage';// -使
static const lockScreenPage = '/LockScreenPage';// -
static const aPPUnlockNeedMobileNetworkingLockPage = '/APPUnlockNeedMobileNetworkingLockPage';// -app开锁时需手机连网的锁
static const hideInvalidUnlockPermissionsPage = '/HideInvalidUnlockPermissionsPage';// -
static const starLockLoginPage = '/StarLockLoginPage';//
static const starLockRegisterPage = '/StarLockRegisterPage';//
static const starLockForgetPasswordPage = '/StarLockForgetPasswordPage';//
@ -497,7 +523,7 @@ abstract class AppRouters {
),
GetPage(
name: Routers.valueAddedServicesPage,
page: () => const ValueAddedServicesPage(),
page: () => const ValueAddedServicesListPage(),
),
GetPage(
name: Routers.abountPage,
@ -527,5 +553,53 @@ abstract class AppRouters {
name: Routers.gatewayConfigurationWifiPage,
page: () => const GatewayConfigurationWifiPage(),
),
GetPage(
name: Routers.valueAddedServicesNoteAndEmailDetailPage,
page: () => const ValueAddedServicesNoteAndEmailDetailPage(),
),
GetPage(
name: Routers.valueAddedServicesRealNamePage,
page: () => const ValueAddedServicesRealNamePage(),
),
GetPage(
name: Routers.valueAddedServicesBuyPage,
page: () => const ValueAddedServicesBuyPage(),
),
GetPage(
name: Routers.valueAddedServicesHighFunctionPage,
page: () => const ValueAddedServicesHighFunctionPage(),
),
GetPage(
name: Routers.valueAddedServicesListSMSTemplatePage,
page: () => const ValueAddedServicesListSMSTemplatePage(),
),
GetPage(
name: Routers.valueAddedServicesAddSMSTemplatePage,
page: () => const ValueAddedServicesAddSMSTemplatePage(),
),
GetPage(
name: Routers.valueAddedServicesListEmailTemplatePage,
page: () => const ValueAddedServicesListEmailTemplatePage(),
),
GetPage(
name: Routers.valueAddedServicesAddEmailTemplatePage,
page: () => const ValueAddedServicesAddEmailTemplatePage(),
),
GetPage(
name: Routers.valueAddedServicesBuyAndUseRecordManagePage,
page: () => const ValueAddedServicesBuyAndUseRecordManagePage(),
),
GetPage(
name: Routers.lockScreenPage,
page: () => const LockScreenPage(),
),
GetPage(
name: Routers.aPPUnlockNeedMobileNetworkingLockPage,
page: () => const APPUnlockNeedMobileNetworkingLockPage(),
),
GetPage(
name: Routers.hideInvalidUnlockPermissionsPage,
page: () => const HideInvalidUnlockPermissionsPage(),
),
];
}

View File

@ -40,15 +40,15 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
case 0:
{
//
// return sendElectronicKeySucceed();
return Column(
children: [
keyInfoWidget(),
keyTimeWidget(),
keyRealNameWidget(),
keyBottomWidget()
],
);
return sendElectronicKeySucceed();
// return Column(
// children: [
// keyInfoWidget(),
// keyTimeWidget(),
// keyRealNameWidget(),
// keyBottomWidget()
// ],
// );
}
break;
case 1:

View File

@ -31,7 +31,7 @@ class _SendEmailNotificationPageState extends State<SendEmailNotificationPage> {
Container(
height: 360.h,
color: Colors.white,
padding: EdgeInsets.only(left:20.w, right: 20.w, top: 20.h),
padding: EdgeInsets.only(left:20.w, right: 20.w, top: 20.h, bottom: 20.h),
child:TextField(
maxLines:8,
maxLength:1000,

View File

@ -1,8 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/commonItem.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/trans_lib.dart';
@ -17,11 +19,24 @@ class _AbountPageState extends State<AbountPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFFFFFFF),
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.about!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 150.h,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset("images/icon_main_1024.png", width: 200.w, height: 200.w,),
],
),
SizedBox(height: 30.h,),
const Text("通通锁 6.7.0"),
SizedBox(height: 80.h,),
CommonItem(leftTitel:TranslationLoader.lanKeys!.introduce!.tr, rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){
}),
],
),
);

View File

@ -38,7 +38,7 @@ class _GatewayDetailPageState extends State<GatewayDetailPage> {
CommonItem(leftTitel:TranslationLoader.lanKeys!.nearbyLock!.tr, rightTitle:"2", isHaveLine: true, isHaveDirection: true, action: (){
Navigator.pushNamed(context, Routers.gatewayConnectionLockPage);
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.wifiName!.tr, rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){
CommonItem(leftTitel:TranslationLoader.lanKeys!.gatewayUpgrade!.tr, rightTitle:"", isHaveLine: false, isHaveDirection: true, action: (){
}),
SizedBox(height: 80.h,),

View File

@ -0,0 +1,91 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/commonItem.dart';
import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class APPUnlockNeedMobileNetworkingLockPage extends StatefulWidget {
const APPUnlockNeedMobileNetworkingLockPage({Key? key}) : super(key: key);
@override
State<APPUnlockNeedMobileNetworkingLockPage> createState() => _APPUnlockNeedMobileNetworkingLockPageState();
}
class _APPUnlockNeedMobileNetworkingLockPageState extends State<APPUnlockNeedMobileNetworkingLockPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: "APP开锁时需手机连网的锁", haveBack:true, backgroundColor: AppColors.mainColor),
body:Column(
children: [
Container(
padding: EdgeInsets.all(30.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text("对于选中的这些锁当用户用APP开锁时他的手机需要是连网的否则无法开锁")),
],
),
),
CommonItem(leftTitel:"全选", rightTitle:"", allHeight:100.h, isHaveLine: false, isHaveRightWidget: true,
rightWidget: GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
),
SizedBox(height: 15.h),
Expanded(
child: ListView.builder(
itemCount:10,
itemBuilder: (c, index){
return _gatewatListItem('images/mine/icon_mine_gatewayListMainIcon.png', "星锁网关", "在线", "2", (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
});
}
),
),
SubmitBtn(btnName: TranslationLoader.lanKeys!.sure!.tr,
borderRadius: 20.w,
fontSize: 32.sp,
margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.h, bottom: 30.h),
padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
onClick: () {
}
),
],
)
);
}
Widget _gatewatListItem(String lockTypeIcon, String gateWayName, String isOnline, String lockNumber, Function() action){
return GestureDetector(
onTap: action,
child: Container(
height: 80.h,
margin: const EdgeInsets.only(bottom: 2),
padding: EdgeInsets.only(left: 10.w, right: 20.w, top: 20.h, bottom: 20.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Row(
children: [
SizedBox(width: 15.w,),
Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),
SizedBox(width: 10.w,),
Text("MCBN01_8f3106", style: TextStyle(fontSize: 30.sp, fontWeight: FontWeight.w600),)
],
),
),
);
}
}

View File

@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class HideInvalidUnlockPermissionsPage extends StatefulWidget {
const HideInvalidUnlockPermissionsPage({Key? key}) : super(key: key);
@override
State<HideInvalidUnlockPermissionsPage> createState() => _HideInvalidUnlockPermissionsPageState();
}
class _HideInvalidUnlockPermissionsPageState extends State<HideInvalidUnlockPermissionsPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: "隐藏无效开锁权限", haveBack:true, backgroundColor: AppColors.mainColor),
body:Container(
padding: EdgeInsets.all(30.w),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text("功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。")),
],
),
SizedBox(height: 20.h,),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text("${TranslationLoader.lanKeys!.currentMode!.tr} : ${TranslationLoader.lanKeys!.opened!.tr}", style: TextStyle(fontWeight: FontWeight.w600),)),
],
),
SizedBox(height: 30.h,),
SubmitBtn(btnName: TranslationLoader.lanKeys!.closed!.tr,
borderRadius: 20.w,
fontSize: 32.sp,
// margin: EdgeInsets.only(left: 03.w, right: 30.w, top: 20.w),
padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
onClick: () {
}
),
],
),
)
);
}
}

View File

@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class LockScreenPage extends StatefulWidget {
const LockScreenPage({Key? key}) : super(key: key);
@override
State<LockScreenPage> createState() => _LockScreenPageState();
}
class _LockScreenPageState extends State<LockScreenPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: "锁屏", haveBack:true, backgroundColor: AppColors.mainColor),
body:Container(
padding: EdgeInsets.all(30.w),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text("功能开启后,需使用指纹、人脸或账号密码来打开 APP。3分钟内不需要再次验证")),
],
),
SizedBox(height: 20.h,),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text("${TranslationLoader.lanKeys!.currentMode!.tr} : ${TranslationLoader.lanKeys!.opened!.tr}", style: TextStyle(fontWeight: FontWeight.w600),)),
],
),
SizedBox(height: 30.h,),
SubmitBtn(btnName: TranslationLoader.lanKeys!.closed!.tr,
borderRadius: 20.w,
fontSize: 32.sp,
// margin: EdgeInsets.only(left: 03.w, right: 30.w, top: 20.w),
padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
onClick: () {
}
),
],
),
)
);
}
}

View File

@ -51,37 +51,37 @@ class _MineSetPageState extends State<MineSetPage> {
Navigator.pushNamed(context, Routers.mineMultiLanguagePage);
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.lockScreen!.tr, rightTitle:TranslationLoader.lanKeys!.opened!.tr, isHaveLine: true, isHaveDirection: true, action: (){
Navigator.pushNamed(context, Routers.lockScreenPage);
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.hideInvalidUnlockPermissions!.tr, rightTitle:TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: (){
Navigator.pushNamed(context, Routers.hideInvalidUnlockPermissionsPage);
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.appUnlockRequiresMobilePhoneAccessToTheLock!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){
Navigator.pushNamed(context, Routers.aPPUnlockNeedMobileNetworkingLockPage);
}),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){
//
// }),
SizedBox(height: 10.h,),
CommonItem(leftTitel:TranslationLoader.lanKeys!.about!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
SizedBox(height: 10.h,),
CommonItem(leftTitel:TranslationLoader.lanKeys!.userAgreement!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.privacyPolicy!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.personalInformationCollectionList!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.applicationPermissionDescription!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
CommonItem(leftTitel:TranslationLoader.lanKeys!.thirdPartyInformationSharingList!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
}),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.about!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
// SizedBox(height: 10.h,),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.userAgreement!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.privacyPolicy!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.personalInformationCollectionList!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.applicationPermissionDescription!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.thirdPartyInformationSharingList!.tr, rightTitle:"", isHaveLine: true, isHaveDirection: true, action: (){
//
// }),
],
),
),

View File

@ -141,15 +141,16 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget{
children: [
Center(
child: Container(
height: 80.h,
// width: 300.w,
// height: 80.h,
width: 400.w,
padding: EdgeInsets.all(20.h),
color: Colors.white,
child: Row(
children: [
SizedBox(width:20.w),
Image.asset(lockTypeIcon, width: 40.w, height: 40.w,),
SizedBox(width:15.w),
Text(lockTypeTitle, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500), ),
Expanded(child: Text(lockTypeTitle, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500), )),
],
),
),

View File

@ -1,8 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/commonItem.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/trans_lib.dart';
@ -14,6 +17,7 @@ class SupportStaffPage extends StatefulWidget {
}
class _SupportStaffPageState extends State<SupportStaffPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
@ -21,9 +25,70 @@ class _SupportStaffPageState extends State<SupportStaffPage> {
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.supportStaff!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
supportStaffItem(TranslationLoader.lanKeys!.email!.tr, "786612630@qq.com", true, true, 'images/mine/icon_mine_supportStaff_openEmail.png',() async {
String url = 'mailto:smith@example.org?subject=News&body=New%20plugin' ;
_pushUrl(url);
}),
supportStaffItem(TranslationLoader.lanKeys!.businessCooperation!.tr, "www.starLock.com", true, true, 'images/mine/icon_mine_supportStaff_openEmail.png',() async {
const url = 'tel:15080825640';
_pushUrl(url);
}),
supportStaffItem(TranslationLoader.lanKeys!.officialWebsite!.tr, "www.starLock.com", true, true, 'images/mine/icon_mine_supportStaff_jump.png',() async {
const url = 'https://blog.csdn.net/shulianghan';
_pushUrl(url);
}),
supportStaffItem(TranslationLoader.lanKeys!.computerWebVersion!.tr, "www.starLock.com", false, true, '',(){
}),
supportStaffItem(TranslationLoader.lanKeys!.hotelSystem!.tr, "www.starLock.com", false, true, '',(){
}),
supportStaffItem(TranslationLoader.lanKeys!.manualWebVersion!.tr, "www.starLock.com", true, true, 'images/mine/icon_mine_supportStaff_jump.png',(){
}),
],
),
);
}
_pushUrl(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Widget supportStaffItem (String? leftTitel, String? rightTitle, bool? isHaveRightImg, bool? isHaveLine, String? rightImg, Function()? action,){
return GestureDetector(
onTap: action,
child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
height: 80.h,
color: Colors.white,
padding: EdgeInsets.only(left:20.w, right: 10.w),// , top: 20.w, bottom: 20.w
child: Row(
children: [
SizedBox(width:20.w),
Expanded(child: Text(leftTitel!, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500))),
SizedBox(width:20.w),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [Text(rightTitle!, textAlign: TextAlign.end, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500))
],
),
SizedBox(width:5.w),
isHaveRightImg!?Image.asset(rightImg!, width: 50.w, height: 50.w,):SizedBox(width:10.w),
// SizedBox(width:10.w),
],
),
),
isHaveLine!?Container(height: 0.5.h, color: Colors.grey,):Container()
],
),
);
}
}

View File

@ -0,0 +1,134 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class ValueAddedServicesBuyPage extends StatefulWidget {
const ValueAddedServicesBuyPage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesBuyPage> createState() => _ValueAddedServicesBuyPageState();
}
class _ValueAddedServicesBuyPageState extends State<ValueAddedServicesBuyPage> {
final data = ["1", "2", "3", "4", ];
@override
Widget build(BuildContext context) {
var type = ModalRoute.of(context)?.settings.arguments as int;
return Scaffold(
backgroundColor: Colors.white,
appBar: TitleAppBar(barTitle: _getNavTitle(type), haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
Container(
width: 1.sw,
// height: 400.h,
color: Colors.white,
padding: EdgeInsets.only(left:25.h, right: 25.h, top: 25.h, bottom: 10.h),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(TranslationLoader.lanKeys!.chooseAPackage!.tr, style: TextStyle(fontSize: 32.sp),),
],
)
),
Expanded(
child: GridView.count(
padding: EdgeInsets.all(10.w),
crossAxisCount: 2,
mainAxisSpacing: 10.h,
crossAxisSpacing: 10.w,
childAspectRatio: 1 / 0.5,
children: data.map((title) => _buildItem(title)).toList(),
),
),
Container(
color: Colors.white,
padding: EdgeInsets.only(left:25.h, right: 25.h, top: 25.h, bottom: 10.h),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(TranslationLoader.lanKeys!.modeOfPayment!.tr, style: TextStyle(fontSize: 32.sp),),
SizedBox(height: 20.h,),
Row(
children: [
Image.asset('images/mine/icon_mine_valueAddedServices_zfb.png', width: 40.w, height: 40.w,),
SizedBox(width:20.w),
Expanded(child: Text(TranslationLoader.lanKeys!.alipay!.tr, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500))),
SizedBox(width:5.w),
Image.asset('images/icon_round_selet.png', width: 40.w, height: 40.w,)
],
),
SizedBox(height: 20.h,),
],
),
),
Container(height: 10.h, color: const Color(0xFFF5F5F5),),
Container(
height: 100.h,
color: Colors.white,
child: Row(
children: [
SizedBox(width:20.w),
Expanded(child: Text("¥50", style: TextStyle(fontSize: 36.sp, color: AppColors.mainColor, fontWeight: FontWeight.w500))),
SizedBox(width:5.w),
Container(
width: 180.w,
height: 100.h,
color: AppColors.mainColor,
child: Center(child: Text(TranslationLoader.lanKeys!.goToPay!.tr, style: TextStyle(fontSize: 32.sp, color: Colors.white, fontWeight: FontWeight.w500)))
)
],
),
)
],
),
);
}
Container _buildItem(String title) {
return Container(
margin: EdgeInsets.all(10.w),
padding: EdgeInsets.only(left:30.w, top: 20.h, bottom: 20.h),
decoration: BoxDecoration(
color: title == "1" ? const Color(0xFFEDF1FD):Colors.white,
borderRadius: BorderRadius.all(Radius.circular(20.h)),
border: Border.all(width: 0.5.w, color: Colors.black)
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("500条", style: TextStyle(fontSize: 36.sp),),
SizedBox(height: 10.h),
Text("¥50 (¥0.08/条)", style: TextStyle(fontSize: 32.sp),),
],
),
);
}
String _getNavTitle(int type){
String topTitle = "";
switch(type){
case 1:
topTitle = TranslationLoader.lanKeys!.buySMS!.tr;
break;
case 2:
topTitle = TranslationLoader.lanKeys!.buyMail!.tr;
break;
case 3:
topTitle = TranslationLoader.lanKeys!.buyRealNameAuthenticationTimes!.tr;
break;
case 4:
topTitle = TranslationLoader.lanKeys!.enablingAdvancedFeatures!.tr;
break;
}
return topTitle;
}
}

View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import 'valueAddedServicesBuyAndUseRecordManage_tabbar.dart';
class ValueAddedServicesBuyAndUseRecordManagePage extends StatefulWidget {
const ValueAddedServicesBuyAndUseRecordManagePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesBuyAndUseRecordManagePage> createState() => _ValueAddedServicesBuyAndUseRecordManagePageState();
}
class _ValueAddedServicesBuyAndUseRecordManagePageState extends State<ValueAddedServicesBuyAndUseRecordManagePage> {
var index=0;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.sendKey!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
ValueAddedServicesBuyAndUseRecordManageTabbar(initialIndex: index,),
],
),
);
}
}

View File

@ -0,0 +1,89 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/CustomUnderlineTabIndicator.dart';
import '../valueAddedServicesBuyAndUseRecord_page.dart';
class ValueAddedServicesBuyAndUseRecordManageTabbar extends StatefulWidget {
var initialIndex=1;
ValueAddedServicesBuyAndUseRecordManageTabbar({Key? key, required this.initialIndex}) : super(key: key);
@override
State<ValueAddedServicesBuyAndUseRecordManageTabbar> createState() => _ValueAddedServicesBuyAndUseRecordManageTabbarState();
}
class _ValueAddedServicesBuyAndUseRecordManageTabbarState extends State<ValueAddedServicesBuyAndUseRecordManageTabbar> with SingleTickerProviderStateMixin {
late TabController _tabController;
final List<ItemView> _itemTabs = <ItemView>[
ItemView(title: "购买记录", type: "0"),
ItemView(title: "使用记录", type: "1")
// ItemView(title: TranslationLoader.lanKeys!.once!.tr, type: "2"),
// ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, type: "3"),
];
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(vsync: this, length: _itemTabs.length,initialIndex: widget.initialIndex);
}
@override
Widget build(BuildContext context) {
return Expanded(
child: Column(
children: [
_tabBar(),
_pageWidget(),
],
)
);
}
TabBar _tabBar(){
return TabBar(
controller: _tabController,
tabs: _itemTabs.map((ItemView item) => _tab(item)).toList(),
isScrollable: true,
indicatorColor: Colors.red,
unselectedLabelColor: Colors.black,
unselectedLabelStyle: TextStyle(color:AppColors.mainColor,fontSize: 28.sp,),
automaticIndicatorColorAdjustment:true,
labelColor: AppColors.mainColor,
labelStyle: TextStyle(color: AppColors.mainColor,fontSize: 32.sp,fontWeight: FontWeight.w600),
indicator: CustomUnderlineTabIndicator(borderSide: BorderSide(color: AppColors.mainColor,width: 10.w),strokeCap: StrokeCap.round,width: 0.w),
);
}
Tab _tab(ItemView item) {
return Tab(
// text: item.title,
child: Container(
width: 1.sw/4,
margin: EdgeInsets.all(10.w),
// color: Colors.red,
child: Text(item.title, textAlign: TextAlign.center,),
),
);
}
Widget _pageWidget(){
return Expanded(
child: TabBarView(
controller: _tabController,
children: _itemTabs.map((ItemView item) => ValueAddedServicesBuyAndUseRecordPage(type: item.type,)).toList(),
),
);
}
}
class ItemView {
const ItemView({required this.title, required this.type});
final String title;
final String type;
}

View File

@ -0,0 +1,89 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:star_lock/app_settings/app_colors.dart';
class ValueAddedServicesBuyAndUseRecordPage extends StatefulWidget {
final String type;
const ValueAddedServicesBuyAndUseRecordPage({Key? key, required this.type}) : super(key: key);
@override
State<ValueAddedServicesBuyAndUseRecordPage> createState() => _ValueAddedServicesBuyAndUseRecordPageState();
}
class _ValueAddedServicesBuyAndUseRecordPageState extends State<ValueAddedServicesBuyAndUseRecordPage> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount:20,
itemBuilder: (c, index){
if(index%2 == 0){
return _dateItem("2023-06-29");
}else{
return _operatingRecordItem('images/icon_lock.png', "张三", "2023.6.21 11.15", "2023.6.21 11.15",(){
// Navigator.pushNamed(context, Routers.electronicKeyDetailPage);
});
}
}
);
}
Widget _dateItem(String lockDate){
return Container(
height: 70.h,
color: AppColors.mainBackgroundColor,
padding: EdgeInsets.only(left:20.h, right: 20.h),
child: Row(
children: [
Text(lockDate, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ),
],
),
);
}
Widget _operatingRecordItem(String lockTypeIcon, String lockTypeTitle, String beginTime, String endTime, Function() action){
return GestureDetector(
onTap: action,
child: Container(
height: 110.h,
padding: EdgeInsets.only(left: 20.w, right: 20.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Row(
children: [
SizedBox(width: 30.w,),
Image.asset(lockTypeIcon, width: 50.w, height: 50.w,),
SizedBox(width: 30.w,),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
children: [
Text(lockTypeTitle, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ),
],
),
SizedBox(height:10.h),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text("2023.6.21 11.15", style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w500), ),
],
),
),
SizedBox(width:20.h),
],
),
),
SizedBox(width:20.h),
],
),
),
);
}
}

View File

@ -0,0 +1,262 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/commonItem.dart';
import '../../../../tools/showBottomSheetTool.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
//
final TextStyle highStyle = TextStyle(color: const Color(0xFFEEDFA8), fontSize: 28.sp);
//
final TextStyle defaultStyle = TextStyle(color: Colors.black, fontSize: 28.sp);
//-
InlineSpan emailPasswardSpan = TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.hello!.tr}${TranslationLoader.lanKeys!.yourRoomIs!.tr}', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.roomName!.tr}', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.theCodeToOpenTheDoorIs!.tr}', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.password!.tr}}', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.periodValidity!.tr}', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.periodValidity!.tr}}', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.templateTip1!.tr}', style: defaultStyle),
]);
//-
InlineSpan emailPasswardTipSpan = TextSpan(children: [
TextSpan(text: TranslationLoader.lanKeys!.templateTip4!.tr, style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.roomName!.tr}}', style: highStyle),
TextSpan(text: '', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.password!.tr}}', style: highStyle),
TextSpan(text: TranslationLoader.lanKeys!.and!.tr, style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.periodValidity!.tr}}', style: highStyle),
TextSpan(text: TranslationLoader.lanKeys!.willBeReplacedWithTheActualValue!.tr, style: defaultStyle),
]);
String emaiPasswardStr = "${TranslationLoader.lanKeys!.hello!.tr}${TranslationLoader.lanKeys!.yourRoomIs!.tr}{${TranslationLoader.lanKeys!.roomName!.tr}}${TranslationLoader.lanKeys!.theCodeToOpenTheDoorIs!.tr}{${TranslationLoader.lanKeys!.password!.tr}}。${TranslationLoader.lanKeys!.periodValidity!.tr}{${TranslationLoader.lanKeys!.periodValidity!.tr}}。${TranslationLoader.lanKeys!.templateTip1!.tr}";
//-
InlineSpan emailElectronicKeySpan = TextSpan(children: [
TextSpan(text: TranslationLoader.lanKeys!.templateTip2!.tr, style: defaultStyle),
TextSpan(text: 'https://abc.com/bcd', style: highStyle)
]);
//-
InlineSpan emailElectronicKeyTipSpan = TextSpan(children: [
TextSpan(text: TranslationLoader.lanKeys!.templateTip4!.tr, style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.downloadLink!.tr}', style: highStyle),
TextSpan(text: TranslationLoader.lanKeys!.willBeReplacedWithTheActualValue!.tr, style: defaultStyle),
]);
String emailElectronicKeyStr = "${TranslationLoader.lanKeys!.templateTip2!.tr}\n{${TranslationLoader.lanKeys!.downloadLink!.tr}}";
class ValueAddedServicesAddEmailTemplatePage extends StatefulWidget {
const ValueAddedServicesAddEmailTemplatePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesAddEmailTemplatePage> createState() => _ValueAddedServicesAddEmailTemplatePageState();
}
class _ValueAddedServicesAddEmailTemplatePageState extends State<ValueAddedServicesAddEmailTemplatePage> {
final _templateOneTf = TextEditingController();
final _templateNameTf = TextEditingController();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
_templateOneTf.text = emailElectronicKeyStr;
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle:TranslationLoader.lanKeys!.customMailTemplate!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: ListView(
children: [
_buildEditTopInfo(),
SizedBox(height: 10.h,),
_buildEditTemplate(),
SizedBox(height: 10.h,),
_buildpreview(),
SizedBox(height: 42.h),
SubmitBtn(
btnName: TranslationLoader.lanKeys!.save!.tr,
borderRadius: 10.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: (){
// Navigator.pushNamed(context, Routers.sendElectronicKeyManagePage);
}
),
],
));
}
Widget _buildEditTopInfo() {
return Column(
children: [
CommonItem(leftTitel:TranslationLoader.lanKeys!.name!.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget(_templateNameTf, TranslationLoader.lanKeys!.pleaseEnter!.tr)),
CommonItem(leftTitel:TranslationLoader.lanKeys!.type!.tr, rightTitle:TranslationLoader.lanKeys!.password!.tr, isHaveLine: false, action:(){
_showSeletTemplateType();
}),
],
);
}
Widget _buildEditTemplate() {
return Container(
color: Colors.white,
child: Column(
children: [
Row(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 25.h, bottom: 25.h, right: 25.w),
child: Text(TranslationLoader.lanKeys!.templateContent!.tr, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w600),
),
),
],
),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w, bottom: 25.h),
height: 100,
child: TextField(
maxLines:8,
// maxLength:1000,
textAlign: TextAlign.start,
controller: _templateOneTf,
style: TextStyle(color: Colors.black,fontSize: 28.sp,),
decoration: InputDecoration(
contentPadding: EdgeInsets.only(top: 20.h, left: 20.w, right: 20.w, bottom: 20.h),
border: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 0.5,
),
),
///
focusedBorder: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 1,
),
),
),
),
),
Container(
padding: EdgeInsets.only(top:20.h, left: 20.w, right: 20.w, bottom: 20.h),
margin: EdgeInsets.only( left: 15.w, right: 15.w, bottom: 15.h),
decoration: BoxDecoration(
color: const Color(0xFFFbF9EC),
borderRadius: BorderRadius.circular(10.h)),
child:RichText(text: emailElectronicKeyTipSpan) ,
)
],
),
);
}
Widget _buildpreview() {
return Column(
// mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
color: Colors.white,
margin: EdgeInsets.only(bottom: 20.h),
child:Column(
children: [
Column(
children: [
Row(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 25.h, bottom: 25.h, right: 25.w),
child: Text(TranslationLoader.lanKeys!.preview!.tr, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w600),
),
),
],
),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w, bottom: 20.h),
padding: EdgeInsets.only(left: 20.w, top: 20.h, right: 20.w, bottom: 20.h),
decoration: BoxDecoration(
color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(10.h),
),
child: RichText(text: emailElectronicKeySpan),
)
],
),
],
)
)
]
);
}
Widget getTFWidget(TextEditingController tfController, String tfStr){
return Container(
height: 50.h,
width: 500.w,
child: Row(
children: [
Expanded(
child: TextField(
//
maxLines: 1,
controller: tfController,
autofocus: false,
textAlign:TextAlign.end,
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
//线
border: InputBorder.none,
),
),
),
],
),
);
}
void _showSeletTemplateType(){
var list = [TranslationLoader.lanKeys!.electronicKey!.tr, TranslationLoader.lanKeys!.password!.tr];
ShowBottomSheetTool().showSingleRowPicker(
//
context,
//
normalIndex: 0,
title: TranslationLoader.lanKeys!.type!.tr,
cancelTitle: TranslationLoader.lanKeys!.cancel!.tr,
sureTitle: TranslationLoader.lanKeys!.sure!.tr,
//
//
//adapter: PickerAdapter(),
data: list,
//
clickCallBack: (int index, var str) {
}
);
}
}

View File

@ -0,0 +1,139 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import '../valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart';
class ValueAddedServicesListEmailTemplatePage extends StatefulWidget {
const ValueAddedServicesListEmailTemplatePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesListEmailTemplatePage> createState() => _ValueAddedServicesListEmailTemplatePageState();
}
class _ValueAddedServicesListEmailTemplatePageState extends State<ValueAddedServicesListEmailTemplatePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.customMailTemplate!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
_topTipWidget(),
Expanded(child: _buildMainUI()),
SubmitBtn(
btnName: TranslationLoader.lanKeys!.creatingANewTemplate!.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: (){
Navigator.pushNamed(context, Routers.valueAddedServicesAddEmailTemplatePage);
}
),
],
),
);
}
Widget _topTipWidget(){
return Container(
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: [
Text(TranslationLoader.lanKeys!.customTemplatesTip!.tr),
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: [
Container(
width:1.sw - 15.w*2 - 40.w*2 - 140.w,
// margin: EdgeInsets.only(top:15.h, left: 15.w, right: 15.w, bottom: 15.h),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${TranslationLoader.lanKeys!.currentState!.tr}${TranslationLoader.lanKeys!.onTrial!.tr}"),
Text(TranslationLoader.lanKeys!.unHaveOpenedTip2!.tr)
],
),
),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesHighFunctionPage);
},
child: Container(
width: 140.w,
height: 70.h,
decoration: BoxDecoration(
color: const Color(0xFFCAB68D),
borderRadius: BorderRadius.circular(35.h)
),
child: Center(child: Text(TranslationLoader.lanKeys!.goToTheOpen!.tr, textAlign: TextAlign.center, style: TextStyle(color: Colors.white)))
),
),
],
) ,
)
],
)
);
}
Widget _buildMainUI(){
return ListView.builder(
itemCount:10,
itemBuilder: (c, index){
return _valueAddedServicesListSMSTemplateItem('images/icon_lock.png', "张三", (){
// Navigator.pushNamed(context, Routers.valueAddedServicesAddSMSTemplatePage);
});
}
);
}
Widget _valueAddedServicesListSMSTemplateItem(String title, String content, Function() action){
return GestureDetector(
onTap: action,
child: Container(
// height: 100.h,
margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(left:30.h, top: 30.h, bottom: 20.h),
child: Text("101", style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ),
),
Container(
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, right: 20.w, bottom: 20.h),
child: RichText(text: emailElectronicKeySpan)),
),
],
),
),
);
}
}

View File

@ -0,0 +1,240 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class ValueAddedServicesHighFunctionPage extends StatefulWidget {
const ValueAddedServicesHighFunctionPage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesHighFunctionPage> createState() => _ValueAddedServicesHighFunctionPageState();
}
class _ValueAddedServicesHighFunctionPageState extends State<ValueAddedServicesHighFunctionPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: TitleAppBar(barTitle:TranslationLoader.lanKeys!.advancedFunction!.tr, haveBack:true, iconColor: Colors.black, titleColor: Colors.black, backgroundColor: Colors.white),
body:Column(
children: [
Expanded(
child: ListView(
children: [
_topShowState(),
_benefitsContent(),
Container(height: 20.h, color: const Color(0xFFF5F5F5)),
_buyNotes(),
],
),
),
_bottomBtn(),
],
)
);
}
Widget _topShowState(){
return Container(
height: 150.h,
margin: EdgeInsets.only(left: 30.w, top: 20.h, right: 30.w),
padding: EdgeInsets.only(left: 30.w),
decoration: BoxDecoration(
color: const Color(0xFFDFE6ED),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30.h),
topRight: Radius.circular(30.h),
),
),
child: Stack(
alignment: AlignmentDirectional.centerStart,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
// crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${TranslationLoader.lanKeys!.currentState!.tr}:${TranslationLoader.lanKeys!.haveNotOpened!.tr}", style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w600),),
SizedBox(height: 5.h),
Text("${TranslationLoader.lanKeys!.periodValidity!.tr}:2023-07-29", style: TextStyle(fontSize: 30.sp, fontWeight: FontWeight.w600),),
],//
),
],
),
Positioned(
bottom: 0.h,
right: 0.w,
child: Container(
width: 120.w,
height: 60.h,
decoration: BoxDecoration(
color: const Color(0xFFBDCDDF),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30.h),
bottomLeft: Radius.circular(30.h),
),
),
child: Center(child: Text(TranslationLoader.lanKeys!.record!.tr)),
)
),
],
),
);
}
Widget _benefitsContent(){
return Column(
children: [
Container(
// color: Colors.red,
margin: EdgeInsets.only(left: 30.w, top: 50.h, right: 30.w),
padding: EdgeInsets.only(left: 30.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset('images/mine/icon_mine_highFunctionContent_left.png', width: 40.w, height: 40.w),
SizedBox(width: 10.w,),
Expanded(
child: Text(TranslationLoader.lanKeys!.advancedFeaturesAndBenefitsContent!.tr, textAlign: TextAlign.center,style: TextStyle(fontSize: 36.sp, fontWeight: FontWeight.w600)),
),
SizedBox(width: 10.w,),
Image.asset('images/mine/icon_mine_highFunctionContent_right.png', width: 40.w, height: 40.w)
]
),
),
SizedBox(height: 10.h,),
Container(
height: 1.sw,
child: GridView.count(
padding: EdgeInsets.all(10.h),
crossAxisCount: 3,
mainAxisSpacing: 10.h,
crossAxisSpacing: 10.h,
// childAspectRatio: 1 / 0.5,
physics: const NeverScrollableScrollPhysics(),
children: [
_buildItem("images/mine/icon_mine_highFunctionContent_dxmb.png", TranslationLoader.lanKeys!.smsTemplate!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_yjmb.png", TranslationLoader.lanKeys!.emailTemplate!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_sqgly.png", TranslationLoader.lanKeys!.authorizedAdmin!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_sfz.png", TranslationLoader.lanKeys!.lockGroup!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_bjft.png", TranslationLoader.lanKeys!.sendGroupKey!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_bjft.png", TranslationLoader.lanKeys!.markedHouseState!.tr),
_buildItem("images/mine/icon_mine_highFunctionContent_fkgj.png", TranslationLoader.lanKeys!.cardIssuingtool!.tr),
],
),
),
],
);
}
Container _buildItem(String img, String title) {
return Container(
margin: EdgeInsets.all(10.h),
padding: EdgeInsets.only(top: 30.h),
decoration: BoxDecoration(
color: const Color(0xFFF7F7FA),
borderRadius: BorderRadius.all(Radius.circular(20.h)),
// border: Border.all(width: 0.5.w, color: Colors.black)
),
child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 90.w,
height: 90.w,
child: Image.asset(img)
),
SizedBox(height: 10.h,),
Column(
children: [
Text(title, style: TextStyle(fontSize: 32.sp), textAlign: TextAlign.center,),
],
),
],
),
);
}
Widget _buyNotes(){
return Column(
children: [
Container(
// color: Colors.red,
margin: EdgeInsets.only(left: 30.w, top: 50.h, right: 30.w),
padding: EdgeInsets.only(left: 30.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset('images/mine/icon_mine_highFunctionContent_left.png', width: 40.w, height: 40.w),
SizedBox(width: 10.w,),
Expanded(child: Text(TranslationLoader.lanKeys!.titleForBuyingAdvancedFeatures!.tr, textAlign: TextAlign.center, style: TextStyle(fontSize: 36.sp, fontWeight: FontWeight.w600))),
SizedBox(width: 10.w,),
Image.asset('images/mine/icon_mine_highFunctionContent_right.png', width: 40.w, height: 40.w)
]
),
),
SizedBox(height: 20.h),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w),
decoration: BoxDecoration(
color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(10.h),
),
child: Padding(
padding: EdgeInsets.only(left: 30.w, top: 30.h, right: 30.w, bottom: 30.h),
child: Text(TranslationLoader.lanKeys!.tipsForBuyingAdvancedFeatures!.tr)),
),
SizedBox(height: 20.h),
],
);
}
Widget _bottomBtn(){
return Container(
margin: EdgeInsets.only(top: 30.h, bottom: 30.h),
child: Row(
children: [
Visibility(
child: Container(
height: 100.h,
width: (1.sw-20.w*3)/2,
margin: EdgeInsets.only(left: 20.w),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(width: 3.w, color: const Color(0xFF000635)),
borderRadius: BorderRadius.circular(50.h),
),
child: Center(child: Text(TranslationLoader.lanKeys!.freeTrial!.tr, style: TextStyle(fontSize: 34.sp),)),
),
),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesBuyPage, arguments: 4);
},
child: Container(
height: 100.h,
width: (1.sw-20.w*3)/2,
// width: 1.sw-20.w*2,
margin: EdgeInsets.only(left: 20.w, right: 20.w),
decoration: BoxDecoration(
color: const Color(0xFF424658),
border: Border.all(width: 1, color: AppColors.mainColor),
borderRadius: BorderRadius.circular(50.h),
),
child: Center(child: Text(TranslationLoader.lanKeys!.openNow!.tr, style: TextStyle(fontSize: 34.sp, color: const Color(0xFFF9CEAC)),)),
),
),
],
),
);
}
}

View File

@ -0,0 +1,93 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class ValueAddedServicesListPage extends StatefulWidget {
const ValueAddedServicesListPage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesListPage> createState() => _ValueAddedServicesPageListState();
}
class _ValueAddedServicesPageListState extends State<ValueAddedServicesListPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.valueAddedServices!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: ListView(
children: [
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_note.png'), TranslationLoader.lanKeys!.note!.tr, (){
Navigator.pushNamed(context, Routers.valueAddedServicesNoteAndEmailDetailPage, arguments: 1);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_email.png'), TranslationLoader.lanKeys!.mail!.tr, (){
Navigator.pushNamed(context, Routers.valueAddedServicesNoteAndEmailDetailPage, arguments: 2);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_realName.png'), TranslationLoader.lanKeys!.realNameAuthentication!.tr, (){
Navigator.pushNamed(context, Routers.valueAddedServicesRealNamePage);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_vip.png'), TranslationLoader.lanKeys!.advancedFunction!.tr, (){
Navigator.pushNamed(context, Routers.valueAddedServicesHighFunctionPage);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_push.png'), TranslationLoader.lanKeys!.pushMessage!.tr, (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_checkIn.png'), TranslationLoader.lanKeys!.checkingIn!.tr, (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
}),
_valueAddedServicesItem(Image.asset('images/mine/icon_mine_valueAddedServices_storage.png'), TranslationLoader.lanKeys!.recordsRetention!.tr, (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
}),
_valueAddedServicesItem(Text("A", style: TextStyle(color: Colors.white, fontSize: 38.sp, fontWeight: FontWeight.w600),), "Amazon Alexa", (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
}),
_valueAddedServicesItem(Text("G", style: TextStyle(color: Colors.white, fontSize: 38.sp, fontWeight: FontWeight.w600),), "Google Home", (){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
}),
],
),
);
}
Widget _valueAddedServicesItem(Widget widget, String gateWayName, Function() action){
return GestureDetector(
onTap: action,
child: Container(
// height: 100.h,
margin: EdgeInsets.only(top: 20.h, right: 20.w, left: 20.w),
padding: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.h, bottom: 20.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Row(
children: [
Container(
width: 70.w,
height: 70.w,
padding: EdgeInsets.all(12.h),
decoration: BoxDecoration(
color: AppColors.mainColor,
borderRadius: BorderRadius.circular(40.w)
),
child: Center(child: widget),
),
SizedBox(width: 20.w,),
Expanded(
child: Text(gateWayName, style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w600), ),
),
SizedBox(width:20.h),
Image.asset('images/icon_right.png', width: 50.w, height: 50.w,)
],
),
),
);
}
}

View File

@ -0,0 +1,128 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/commonItem.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class ValueAddedServicesNoteAndEmailDetailPage extends StatefulWidget {
const ValueAddedServicesNoteAndEmailDetailPage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesNoteAndEmailDetailPage> createState() => _ValueAddedServicesNoteAndEmailDetailPageState();
}
class _ValueAddedServicesNoteAndEmailDetailPageState extends State<ValueAddedServicesNoteAndEmailDetailPage> {
@override
Widget build(BuildContext context) {
var type = ModalRoute.of(context)?.settings.arguments as int;
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: type == 1?TranslationLoader.lanKeys!.note!.tr:TranslationLoader.lanKeys!.mail!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
Container(
width: 1.sw,
// color: Colors.grey.shade300,
padding: EdgeInsets.only(left:25.h, right: 25.h, top: 25.h, bottom: 10.h),
child: Text(type == 1?TranslationLoader.lanKeys!.smsBuyTip!.tr:TranslationLoader.lanKeys!.emailBuyTip!.tr)
),
middleWidget(type),
],
),
);
}
Widget middleWidget(int type){
return Container(
width: 1.sw,
// height: 100,
// color: Colors.grey.shade300,
margin: EdgeInsets.all(10.h),
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("images/mine/icon_mine_valueAddedServices_noteTop.png"),
fit: BoxFit.cover
)
),
child: Column(
children: [
// SizedBox(height:10),
Container(
margin: const EdgeInsets.only(top:15, bottom: 15, left: 30, right: 30),
child: Row(
children: [
Expanded(child: Text("${TranslationLoader.lanKeys!.currentRemainingQuantity!.tr}:0", style: TextStyle(fontSize: 32.sp),)),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesBuyPage, arguments: type);
},
child: Container(
width: 50,
height: 25,
decoration: BoxDecoration(
color: AppColors.mainColor,
borderRadius: BorderRadius.circular(25)
),
child: Center(child: Text(TranslationLoader.lanKeys!.buy!.tr, style: const TextStyle(color: Colors.white)))
),
),
],
),
),
// SizedBox(height:20.h),
Container(
margin: const EdgeInsets.only(top:10, bottom: 10),
// color: Colors.red,
// height: 100.h,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: (){
if(type == 1){
Navigator.pushNamed(context, Routers.valueAddedServicesListSMSTemplatePage);
}else{
Navigator.pushNamed(context, Routers.valueAddedServicesListEmailTemplatePage);
}
},
child: Container(
// width:100,
// padding: EdgeInsets.only(top:5, bottom: 5, left: 5, right: 5),
child: Row(
children: [
SizedBox(width: 30.w,),
Image.asset("images/mine/icon_mine_valueAddedServices_buyIcon.png", width: 50.w, height: 50.w,),
Text((type == 1)?TranslationLoader.lanKeys!.customSMSTemplate!.tr:TranslationLoader.lanKeys!.customMailTemplate!.tr, style: TextStyle(fontSize: 32.sp),),
],
),
),
),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesBuyAndUseRecordManagePage);
},
child: Container(
width:90,
// height: 70.h,
margin: const EdgeInsets.only(left: 30, right: 30),
padding: EdgeInsets.only(top:5, bottom: 5, left: 5, right: 5),
// color: Colors.red,
child: Center(child: Text(TranslationLoader.lanKeys!.record!.tr, style: TextStyle(color: Colors.black, fontSize: 32.sp)))
),
),
],
),
),
]
)
);
}
}

View File

@ -0,0 +1,150 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/commonItem.dart';
import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class ValueAddedServicesRealNamePage extends StatefulWidget {
const ValueAddedServicesRealNamePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesRealNamePage> createState() => _ValueAddedServicesRealNamePageState();
}
class _ValueAddedServicesRealNamePageState extends State<ValueAddedServicesRealNamePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.realNameAuthentication!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
Container(
width: 1.sw,
// color: Colors.grey.shade300,
padding: EdgeInsets.only(left:25.h, right: 25.h, top: 25.h, bottom: 10.h),
child: Text(TranslationLoader.lanKeys!.buyRealNameTip!.tr)
),
middleWidget(),
bottomWidget()
],
),
);
}
Widget middleWidget(){
return Container(
width: 1.sw,
// height: 100,
// color: Colors.grey.shade300,
margin: EdgeInsets.all(10.h),
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("images/mine/icon_mine_valueAddedServices_noteTop.png"),
fit: BoxFit.cover
)
),
child: Column(
children: [
// SizedBox(height:10),
Container(
margin: const EdgeInsets.only(top:15, bottom: 15, left: 30, right: 30),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("${TranslationLoader.lanKeys!.currentRemainingQuantity!.tr}:0", style: TextStyle(fontSize: 32.sp),)
],
),
),
// SizedBox(height:20.h),
Container(
margin: const EdgeInsets.only(top:10, bottom: 10),
// color: Colors.red,
// height: 100.h,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
GestureDetector(
onTap: (){
},
child: Container(
width: 200.w,
// height: 70.h,
// color: Colors.red,
child: Center(child: Text(TranslationLoader.lanKeys!.record!.tr, style: TextStyle(color: Colors.black, fontSize: 32.sp)))
),
),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesBuyPage, arguments: 3);
},
child: Container(
width: 200.w,
// height: 70.h,
// color: Colors.red,
child: Center(child: Text(TranslationLoader.lanKeys!.buy!.tr, style: TextStyle(color: AppColors.mainColor, fontSize: 32.sp)))
),
),
],
),
),
]
)
);
}
Widget bottomWidget(){
return Container(
width: 1.sw,
color: Colors.white,
margin: EdgeInsets.all(20.h),
child: Column(
children: [
Column(
children: [
Container(
padding: EdgeInsets.only(top:20.h, bottom: 20.h, left: 30.w),
child: Text(TranslationLoader.lanKeys!.buyRealNameSeletYouWantBuyTip!.tr, style: TextStyle(fontSize: 32.sp),)
),
],
),
CommonItem(leftTitel:TranslationLoader.lanKeys!.forTheFirstTime!.tr, rightTitle:"", allHeight:80.h, isHaveLine: true, isHaveRightWidget: true,
rightWidget: GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
),
CommonItem(leftTitel:TranslationLoader.lanKeys!.onceDay!.tr, rightTitle:"", allHeight:80.h, isHaveLine: true, isHaveRightWidget: true,
rightWidget: GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
),
CommonItem(leftTitel:TranslationLoader.lanKeys!.weekOnce!.tr, rightTitle:"", allHeight:80.h, isHaveLine: true, isHaveRightWidget: true,
rightWidget: GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
),
CommonItem(leftTitel:TranslationLoader.lanKeys!.monthOnce!.tr, rightTitle:"", allHeight:80.h, isHaveLine: false, isHaveRightWidget: true,
rightWidget: GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
),
],
),
);
}
}

View File

@ -0,0 +1,344 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import '../../../../tools/commonItem.dart';
import '../../../../tools/showBottomSheetTool.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
//
final TextStyle highStyle = TextStyle(color: const Color(0xFFEEDFA8), fontSize: 28.sp);
//
final TextStyle defaultStyle = TextStyle(color: Colors.black, fontSize: 28.sp);
//-
late InlineSpan passwardSpan = TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.hello!.tr}\n${TranslationLoader.lanKeys!.yourRoomIs!.tr}', style: defaultStyle),
TextSpan(text: '201', style: highStyle),
TextSpan(text: ' ${TranslationLoader.lanKeys!.theCodeToOpenTheDoorIs!.tr} ', style: defaultStyle),
TextSpan(text: '332211\n', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.periodValidity!.tr} ', style: defaultStyle),
TextSpan(text: '2021.12.11 12:00 - 2021.12.12 13:00。\n', style: highStyle),
TextSpan(text: TranslationLoader.lanKeys!.templateTip1!.tr, style: defaultStyle),
]);
//-
late InlineSpan electronicKeySpan = TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.hello!.tr}\n${TranslationLoader.lanKeys!.templateTip2!.tr}', style: defaultStyle),
TextSpan(text: 'https://abc.com/bcd\n', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.templateTip3!.tr}\n', style: defaultStyle),
TextSpan(text: 'https://abc.com/bcd', style: highStyle),
]);
class ValueAddedServicesAddSMSTemplatePage extends StatefulWidget {
const ValueAddedServicesAddSMSTemplatePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesAddSMSTemplatePage> createState() => _ValueAddedServicesAddSMSTemplatePageState();
}
class _ValueAddedServicesAddSMSTemplatePageState extends State<ValueAddedServicesAddSMSTemplatePage> {
final _templateOneTf = TextEditingController();
final _templateTwoTf = TextEditingController();
final _templateNameTf = TextEditingController();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
_templateOneTf.text = TranslationLoader.lanKeys!.hello!.tr;
_templateTwoTf.text = TranslationLoader.lanKeys!.templateTip1!.tr;
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle:TranslationLoader.lanKeys!.customSMSTemplate!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: ListView(
children: [
_buildEditTopInfo(),
SizedBox(height: 10.h,),
_buildEditTemplate(),
SizedBox(height: 10.h,),
_buildpreview(),
SizedBox(height: 42.h),
SubmitBtn(
btnName: TranslationLoader.lanKeys!.save!.tr,
borderRadius: 10.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: (){
// Navigator.pushNamed(context, Routers.sendElectronicKeyManagePage);
}
),
],
));
}
Widget _buildEditTopInfo() {
return Column(
children: [
CommonItem(leftTitel:TranslationLoader.lanKeys!.name!.tr, rightTitle:"", isHaveLine: true, isHaveRightWidget: true, rightWidget: getTFWidget(_templateNameTf, TranslationLoader.lanKeys!.pleaseEnter!.tr)),
CommonItem(leftTitel:TranslationLoader.lanKeys!.type!.tr, rightTitle:TranslationLoader.lanKeys!.password!.tr, isHaveLine: false, action:(){
_showSeletTemplateType();
}),
],
);
}
Widget _buildEditTemplate() {
return Container(
color: Colors.white,
child: Column(
children: [
Row(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 25.h, bottom: 25.h, right: 25.w),
child: Text(TranslationLoader.lanKeys!.templateContent!.tr, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w600),
),
),
],
),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w, bottom: 25.h),
height: 100,
child: TextField(
maxLines:8,
// maxLength:1000,
textAlign: TextAlign.start,
controller: _templateOneTf,
style: TextStyle(color: Colors.black,fontSize: 28.sp,),
decoration: InputDecoration(
contentPadding: EdgeInsets.only(top: 20.h, left: 20.w, right: 20.w, bottom: 20.h),
border: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 0.5,
),
),
///
focusedBorder: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 1,
),
),
),
),
),
Visibility(
visible: true,
child: Column(
children: [
Column(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 10.h, right: 25.w),
child: RichText(text: TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.yourRoomIs!.tr} ', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.roomName!.tr}}', style: highStyle),
TextSpan(text: ' ${TranslationLoader.lanKeys!.theCodeToOpenTheDoorIs!.tr} ', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.password!.tr}}', style: highStyle),
]))),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 10.h),
child: RichText(text: TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.periodValidity!.tr} ', style: defaultStyle),
TextSpan(text: '{${TranslationLoader.lanKeys!.periodValidity!.tr}}', style: highStyle),
]))
),
SizedBox(width: 10.w,),
GestureDetector(
onTap: (){
},
child: Row(children: [Image.asset('images/icon_round_unSelet.png', width: 40.w, height: 40.w,),],),)
],
),
],
),
),
Visibility(
visible: false,
child: Row(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 10.h, right: 25.w),
child: RichText(text: TextSpan(children: [
TextSpan(text: '${TranslationLoader.lanKeys!.templateTip2!.tr}\n', style: defaultStyle),
TextSpan(text: 'https://abc.com/bcd\n', style: highStyle),
TextSpan(text: '${TranslationLoader.lanKeys!.templateTip3!.tr}\n', style: defaultStyle),
TextSpan(text: 'https://abc.com/bcd\n', style: highStyle),
]))
),
],
),
),
SizedBox(height: 10.h),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w, bottom: 25.h),
height: 100,
child: Stack(
alignment: Alignment.bottomRight,
children: [
TextField(
maxLines:8,
// maxLength:1000,
textAlign: TextAlign.start,
controller: _templateTwoTf,
style: TextStyle(color: Colors.black,fontSize: 28.sp,),
decoration: InputDecoration(
contentPadding: EdgeInsets.only(top: 20.h, left: 20.w, right: 20.w, bottom: 20.h),
border: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 0.5,
),
),
///
focusedBorder: OutlineInputBorder(
///
borderRadius: BorderRadius.all(Radius.circular(20.h)),
///
borderSide: const BorderSide(
///
color: Color(0xffB2B2B2),
///
width: 1,
),
),
),
)
],
),
),
],
),
);
}
Widget _buildpreview() {
return Column(
// mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
color: Colors.white,
margin: EdgeInsets.only(bottom: 20.h),
child:Column(
children: [
Column(
children: [
Row(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 25.h, bottom: 25.h, right: 25.w),
child: Text(TranslationLoader.lanKeys!.preview!.tr, style: TextStyle(fontSize: 28.sp, fontWeight: FontWeight.w600),
),
),
],
),
Container(
margin: EdgeInsets.only(left: 25.w, right: 25.w),
decoration: BoxDecoration(
color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(10.h),
),
child: Padding(
padding: EdgeInsets.only(left: 20.w, top: 20.h, right: 20.w, bottom: 20.h),
child: RichText(text: passwardSpan)),
),
Column(
children: [
Padding(
padding: EdgeInsets.only(left: 25.w, top: 25.h, bottom: 25.h, right: 25.w),
child: Text('${TranslationLoader.lanKeys!.expectedNotoCount!.tr}2', style: TextStyle(color: Colors.grey, fontSize: 26.sp,),
),
),
],
),
],
),
],
)
)
]
);
}
Widget getTFWidget(TextEditingController tfController, String tfStr){
return Container(
height: 50.h,
width: 500.w,
child: Row(
children: [
Expanded(
child: TextField(
//
maxLines: 1,
controller: tfController,
autofocus: false,
textAlign:TextAlign.end,
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
//线
border: InputBorder.none,
),
),
),
],
),
);
}
void _showSeletTemplateType(){
var list = [TranslationLoader.lanKeys!.electronicKey!.tr, TranslationLoader.lanKeys!.password!.tr];
ShowBottomSheetTool().showSingleRowPicker(
//
context,
//
normalIndex: 0,
title: TranslationLoader.lanKeys!.type!.tr,
cancelTitle: TranslationLoader.lanKeys!.cancel!.tr,
sureTitle: TranslationLoader.lanKeys!.sure!.tr,
//
//
//adapter: PickerAdapter(),
data: list,
//
clickCallBack: (int index, var str) {
}
);
}
}

View File

@ -0,0 +1,139 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import '../valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart';
class ValueAddedServicesListSMSTemplatePage extends StatefulWidget {
const ValueAddedServicesListSMSTemplatePage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesListSMSTemplatePage> createState() => _ValueAddedServicesListSMSTemplatePageState();
}
class _ValueAddedServicesListSMSTemplatePageState extends State<ValueAddedServicesListSMSTemplatePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.customSMSTemplate!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
_topTipWidget(),
Expanded(child: _buildMainUI()),
SubmitBtn(
btnName: TranslationLoader.lanKeys!.creatingANewTemplate!.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: (){
Navigator.pushNamed(context, Routers.valueAddedServicesAddSMSTemplatePage);
}
),
],
),
);
}
Widget _topTipWidget(){
return Container(
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: [
Text(TranslationLoader.lanKeys!.customTemplatesTip!.tr),
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: [
Container(
width:1.sw - 15.w*2 - 40.w*2 - 140.w,
// margin: EdgeInsets.only(top:15.h, left: 15.w, right: 15.w, bottom: 15.h),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${TranslationLoader.lanKeys!.currentState!.tr}${TranslationLoader.lanKeys!.onTrial!.tr}"),
Text(TranslationLoader.lanKeys!.unHaveOpenedTip2!.tr)
],
),
),
GestureDetector(
onTap: (){
Navigator.pushNamed(context, Routers.valueAddedServicesHighFunctionPage);
},
child: Container(
width: 140.w,
height: 70.h,
decoration: BoxDecoration(
color: const Color(0xFFCAB68D),
borderRadius: BorderRadius.circular(35.h)
),
child: Center(child: Text(TranslationLoader.lanKeys!.goToTheOpen!.tr, textAlign: TextAlign.center, style: TextStyle(color: Colors.white)))
),
),
],
) ,
)
],
)
);
}
Widget _buildMainUI(){
return ListView.builder(
itemCount:10,
itemBuilder: (c, index){
return _valueAddedServicesListSMSTemplateItem('images/icon_lock.png', "张三", (){
// Navigator.pushNamed(context, Routers.valueAddedServicesAddSMSTemplatePage);
});
}
);
}
Widget _valueAddedServicesListSMSTemplateItem(String title, String content, Function() action){
return GestureDetector(
onTap: action,
child: Container(
// height: 100.h,
margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(left:30.h, top: 30.h, bottom: 20.h),
child: Text("101", style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.w500), ),
),
Container(
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, right: 20.w, bottom: 20.h),
child: RichText(text: electronicKeySpan)),
),
],
),
),
);
}
}

View File

@ -1,29 +0,0 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/trans_lib.dart';
class ValueAddedServicesPage extends StatefulWidget {
const ValueAddedServicesPage({Key? key}) : super(key: key);
@override
State<ValueAddedServicesPage> createState() => _ValueAddedServicesPageState();
}
class _ValueAddedServicesPageState extends State<ValueAddedServicesPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFFFFFFF),
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.valueAddedServices!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
body: Column(
children: [
],
),
);
}
}

View File

@ -294,7 +294,79 @@ class LanKeyEntity {
this.iphone,
this.email,
this.countryAndRegion,
this.selet
this.selet,
this.businessCooperation,
this.officialWebsite,
this.computerWebVersion,
this.hotelSystem,
this.manualWebVersion,
this.introduce,
this.note,
this.mail,
this.advancedFunction,
this.pushMessage,
this.recordsRetention,
this.smsBuyTip,
this.emailBuyTip,
this.currentRemainingQuantity,
this.buy,
this.customSMSTemplate,
this.customMailTemplate,
this.record,
this.buyRealNameTip,
this.buyRealNameSeletYouWantBuyTip,
this.forTheFirstTime,
this.onceDay,
this.weekOnce,
this.monthOnce,
this.currentState,
this.onTrial,
this.haveNotOpened,
this.advancedFeaturesAndBenefitsContent,
this.smsTemplate,
this.emailTemplate,
this.cardIssuingtool,
this.titleForBuyingAdvancedFeatures,
this.tipsForBuyingAdvancedFeatures,
this.freeTrial,
this.openNow,
this.buySMS,
this.buyMail,
this.buyRealNameAuthenticationTimes,
this.enablingAdvancedFeatures,
this.chooseAPackage,
this.modeOfPayment,
this.alipay,
this.goToPay,
this.customTemplatesTip,
this.haveOpened,
this.unHaveOpenedTip1,
this.unHaveOpenedTip2,
this.freeTrialKeywords,
this.goToTheOpen,
this.creatingANewTemplate,
this.type,
this.templateContent,
this.preview,
this.hello,
this.yourRoomIs,
this.roomName,
this.theCodeToOpenTheDoorIs,
this.templateTip1,
this.templateTip2,
this.templateTip3,
this.expectedNotoCount,
this.templateTip4,
this.and,
this.willBeReplacedWithTheActualValue,
this.downloadLink
});
LanKeyEntity.fromJson(dynamic json) {
@ -596,6 +668,78 @@ class LanKeyEntity {
email = json['email'];
countryAndRegion = json['countryAndRegion'];
selet = json['selet'];
businessCooperation = json['businessCooperation'];
officialWebsite = json['officialWebsite'];
computerWebVersion = json['computerWebVersion'];
hotelSystem = json['hotelSystem'];
manualWebVersion = json['manualWebVersion'];
introduce = json['introduce'];
note = json['note'];
mail = json['mail'];
advancedFunction = json['advancedFunction'];
pushMessage = json['pushMessage'];
recordsRetention = json['recordsRetention'];
smsBuyTip = json['smsBuyTip'];
emailBuyTip = json['emailBuyTip'];
currentRemainingQuantity = json['currentRemainingQuantity'];
buy = json['buy'];
customSMSTemplate = json['customSMSTemplate'];
customMailTemplate = json['customMailTemplate'];
record = json['record'];
buyRealNameTip = json['buyRealNameTip'];
buyRealNameSeletYouWantBuyTip = json['buyRealNameSeletYouWantBuyTip'];
forTheFirstTime = json['forTheFirstTime'];
onceDay = json['onceDay'];
weekOnce = json['weekOnce'];
monthOnce = json['monthOnce'];
currentState = json['currentState'];
onTrial = json['onTrial'];
haveNotOpened = json['haveNotOpened'];
advancedFeaturesAndBenefitsContent = json['advancedFeaturesAndBenefitsContent'];
smsTemplate = json['smsTemplate'];
emailTemplate = json['emailTemplate'];
cardIssuingtool = json['cardIssuingtool'];
titleForBuyingAdvancedFeatures = json['titleForBuyingAdvancedFeatures'];
tipsForBuyingAdvancedFeatures = json['tipsForBuyingAdvancedFeatures'];
freeTrial = json['freeTrial'];
openNow = json['openNow'];
buySMS = json['buySMS'];
buyMail = json['buyMail'];
buyRealNameAuthenticationTimes = json['buyRealNameAuthenticationTimes'];
enablingAdvancedFeatures = json['enablingAdvancedFeatures'];
chooseAPackage = json['chooseAPackage'];
modeOfPayment = json['modeOfPayment'];
alipay = json['alipay'];
goToPay = json['goToPay'];
customTemplatesTip = json['customTemplatesTip'];
haveOpened = json['haveOpened'];
unHaveOpenedTip1 = json['unHaveOpenedTip1'];
unHaveOpenedTip2 = json['unHaveOpenedTip2'];
freeTrialKeywords = json['freeTrialKeywords'];
goToTheOpen = json['goToTheOpen'];
creatingANewTemplate = json['creatingANewTemplate'];
type = json['type'];
templateContent = json['templateContent'];
preview = json['preview'];
hello = json['hello'];
yourRoomIs = json['yourRoomIs'];
roomName = json['roomName'];
theCodeToOpenTheDoorIs = json['theCodeToOpenTheDoorIs'];
templateTip1 = json['templateTip1'];
templateTip2 = json['templateTip2'];
templateTip3 = json['templateTip3'];
expectedNotoCount = json['expectedNotoCount'];
templateTip4 = json['templateTip4'];
and = json['and'];
willBeReplacedWithTheActualValue = json['willBeReplacedWithTheActualValue'];
downloadLink = json['downloadLink'];
}
String? starLock;
String? clickUnlockAndHoldDownClose;
@ -893,6 +1037,78 @@ class LanKeyEntity {
String? countryAndRegion;
String? selet;
String? businessCooperation;
String? officialWebsite;
String? computerWebVersion;
String? hotelSystem;
String? manualWebVersion;
String? introduce;
String? note;
String? mail;
String? advancedFunction;
String? pushMessage;
String? recordsRetention;
String? smsBuyTip;
String? emailBuyTip;
String? currentRemainingQuantity;
String? buy;
String? customSMSTemplate;
String? customMailTemplate;
String? record;
String? buyRealNameTip;
String? buyRealNameSeletYouWantBuyTip;
String? forTheFirstTime;
String? onceDay;
String? weekOnce;
String? monthOnce;
String? currentState;
String? onTrial;
String? haveNotOpened;
String? advancedFeaturesAndBenefitsContent;
String? smsTemplate;
String? emailTemplate;
String? cardIssuingtool;
String? titleForBuyingAdvancedFeatures;
String? tipsForBuyingAdvancedFeatures;
String? freeTrial;
String? openNow;
String? buySMS;
String? buyMail;
String? buyRealNameAuthenticationTimes;
String? enablingAdvancedFeatures;
String? chooseAPackage;
String? modeOfPayment;
String? alipay;
String? goToPay;
String? customTemplatesTip;
String? haveOpened;
String? unHaveOpenedTip1;
String? unHaveOpenedTip2;
String? freeTrialKeywords;
String? goToTheOpen;
String? creatingANewTemplate;
String? type;
String? templateContent;
String? preview;
String? hello;
String? yourRoomIs;
String? roomName;
String? theCodeToOpenTheDoorIs;
String? templateTip1;
String? templateTip2;
String? templateTip3;
String? expectedNotoCount;
String? templateTip4;
String? and;
String? willBeReplacedWithTheActualValue;
String? downloadLink;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['starLock'] = starLock;
@ -1192,6 +1408,78 @@ class LanKeyEntity {
map['email'] = email;
map['countryAndRegion'] = countryAndRegion;
map['selet'] = selet;
map['businessCooperation'] = businessCooperation;
map['officialWebsite'] = officialWebsite;
map['computerWebVersion'] = computerWebVersion;
map['hotelSystem'] = hotelSystem;
map['manualWebVersion'] = manualWebVersion;
map['introduce'] = introduce;
map['note'] = note;
map['mail'] = mail;
map['advancedFunction'] = advancedFunction;
map['pushMessage'] = pushMessage;
map['recordsRetention'] = recordsRetention;
map['smsBuyTip'] = smsBuyTip;
map['emailBuyTip'] = emailBuyTip;
map['currentRemainingQuantity'] = currentRemainingQuantity;
map['buy'] = buy;
map['customSMSTemplate'] = customSMSTemplate;
map['customMailTemplate'] = customMailTemplate;
map['record'] = record;
map['buyRealNameTip'] = buyRealNameTip;
map['buyRealNameSeletYouWantBuyTip'] = buyRealNameSeletYouWantBuyTip;
map['forTheFirstTime'] = forTheFirstTime;
map['onceDay'] = onceDay;
map['weekOnce'] = weekOnce;
map['monthOnce'] = monthOnce;
map['currentState'] = currentState;
map['onTrial'] = onTrial;
map['haveNotOpened'] = haveNotOpened;
map['advancedFeaturesAndBenefitsContent'] = advancedFeaturesAndBenefitsContent;
map['smsTemplate'] = smsTemplate;
map['emailTemplate'] = emailTemplate;
map['cardIssuingtool'] = cardIssuingtool;
map['titleForBuyingAdvancedFeatures'] = titleForBuyingAdvancedFeatures;
map['tipsForBuyingAdvancedFeatures'] = tipsForBuyingAdvancedFeatures;
map['freeTrial'] = freeTrial;
map['openNow'] = openNow;
map['buySMS'] = buySMS;
map['buyMail'] = buyMail;
map['buyRealNameAuthenticationTimes'] = buyRealNameAuthenticationTimes;
map['enablingAdvancedFeatures'] = enablingAdvancedFeatures;
map['chooseAPackage'] = chooseAPackage;
map['modeOfPayment'] = modeOfPayment;
map['alipay'] = alipay;
map['goToPay'] = goToPay;
map['customTemplatesTip'] = customTemplatesTip;
map['haveOpened'] = haveOpened;
map['unHaveOpenedTip1'] = unHaveOpenedTip1;
map['unHaveOpenedTip2'] = unHaveOpenedTip2;
map['freeTrialKeywords'] = freeTrialKeywords;
map['goToTheOpen'] = goToTheOpen;
map['creatingANewTemplate'] = creatingANewTemplate;
map['type'] = type;
map['templateContent'] = templateContent;
map['preview'] = preview;
map['hello'] = hello;
map['yourRoomIs'] = yourRoomIs;
map['roomName'] = roomName;
map['theCodeToOpenTheDoorIs'] = theCodeToOpenTheDoorIs;
map['templateTip1'] = templateTip1;
map['templateTip2'] = templateTip2;
map['templateTip3'] = templateTip3;
map['expectedNotoCount'] = expectedNotoCount;
map['templateTip4'] = templateTip4;
map['and'] = and;
map['willBeReplacedWithTheActualValue'] = willBeReplacedWithTheActualValue;
map['downloadLink'] = downloadLink;
return map;
}
}

View File

@ -7,9 +7,13 @@
#include "generated_plugin_registrant.h"
#include <file_selector_linux/file_selector_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
}

View File

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux
url_launcher_linux
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST

View File

@ -9,10 +9,12 @@ import device_info_plus
import file_selector_macos
import package_info_plus
import path_provider_foundation
import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
}

View File

@ -64,7 +64,8 @@ dependencies:
syncfusion_flutter_datepicker: ^22.1.38
#图片选择
image_picker: ^1.0.1
#跳转到外部
url_launcher: ^6.1.12
dev_dependencies:
flutter_test:
sdk: flutter

View File

@ -7,8 +7,11 @@
#include "generated_plugin_registrant.h"
#include <file_selector_windows/file_selector_windows.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
}

View File

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
file_selector_windows
url_launcher_windows
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST