完成出个人设置剩下5个模块之外的所有的UI
@ -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"
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}
|
||||
@ -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":"下载链接"
|
||||
}
|
||||
BIN
star_lock/images/mine/icon_mine_highFunctionContent_bjft.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_dxmb.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_fkgj.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_left.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_right.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_sfz.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_sqgly.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
star_lock/images/mine/icon_mine_highFunctionContent_yjmb.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
star_lock/images/mine/icon_mine_supportStaff_jump.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
star_lock/images/mine/icon_mine_supportStaff_openEmail.png
Normal file
|
After Width: | Height: | Size: 946 B |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_buyIcon.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_checkIn.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_email.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_note.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_noteTop.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_push.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_realName.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_storage.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_vip.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
star_lock/images/mine/icon_mine_valueAddedServices_zfb.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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(),
|
||||
),
|
||||
];
|
||||
}
|
||||
@ -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:
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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: (){
|
||||
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
@ -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,),
|
||||
|
||||
@ -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),)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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: () {
|
||||
|
||||
}
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
56
star_lock/lib/mine/mineSet/lockScreen/lockScreen_page.dart
Normal 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: () {
|
||||
|
||||
}
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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: (){
|
||||
//
|
||||
// }),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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), )),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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()
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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,),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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)),)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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,)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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)))
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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,),],),)
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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: [
|
||||
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
file_selector_linux
|
||||
url_launcher_linux
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
||||
@ -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"))
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"));
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
file_selector_windows
|
||||
url_launcher_windows
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
||||