diff --git a/android/app/src/dev/res/values-en-rUS/string.xml b/android/app/src/dev/res/values-en-rUS/string.xml new file mode 100644 index 00000000..7c497348 --- /dev/null +++ b/android/app/src/dev/res/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + Star Lock + \ No newline at end of file diff --git a/android/app/src/dev/res/values-zh-rCN/string.xml b/android/app/src/dev/res/values-zh-rCN/string.xml new file mode 100644 index 00000000..e55b995c --- /dev/null +++ b/android/app/src/dev/res/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 星锁 + \ No newline at end of file diff --git a/android/app/src/local/res/values-en-rUS/string.xml b/android/app/src/local/res/values-en-rUS/string.xml new file mode 100644 index 00000000..7c497348 --- /dev/null +++ b/android/app/src/local/res/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + Star Lock + \ No newline at end of file diff --git a/android/app/src/local/res/values-zh-rCN/string.xml b/android/app/src/local/res/values-zh-rCN/string.xml new file mode 100644 index 00000000..e55b995c --- /dev/null +++ b/android/app/src/local/res/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 星锁 + \ No newline at end of file diff --git a/android/app/src/main/res/values/values-en-rUS/string.xml b/android/app/src/main/res/values/values-en-rUS/string.xml new file mode 100644 index 00000000..7c497348 --- /dev/null +++ b/android/app/src/main/res/values/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + Star Lock + \ No newline at end of file diff --git a/android/app/src/main/res/values/values-zh-rCN/string.xml b/android/app/src/main/res/values/values-zh-rCN/string.xml new file mode 100644 index 00000000..e55b995c --- /dev/null +++ b/android/app/src/main/res/values/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 星锁 + \ No newline at end of file diff --git a/android/app/src/pre/res/values-en-rUS/string.xml b/android/app/src/pre/res/values-en-rUS/string.xml new file mode 100644 index 00000000..7c497348 --- /dev/null +++ b/android/app/src/pre/res/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + Star Lock + \ No newline at end of file diff --git a/android/app/src/pre/res/values-zh-rCN/string.xml b/android/app/src/pre/res/values-zh-rCN/string.xml new file mode 100644 index 00000000..e55b995c --- /dev/null +++ b/android/app/src/pre/res/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 星锁 + \ No newline at end of file diff --git a/android/app/src/sky/res/values-en-rUS/string.xml b/android/app/src/sky/res/values-en-rUS/string.xml new file mode 100644 index 00000000..a99e9958 --- /dev/null +++ b/android/app/src/sky/res/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + TTLock Pro + \ No newline at end of file diff --git a/android/app/src/sky/res/values-zh-rCN/string.xml b/android/app/src/sky/res/values-zh-rCN/string.xml new file mode 100644 index 00000000..f366b5fc --- /dev/null +++ b/android/app/src/sky/res/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 锁通通 + \ No newline at end of file diff --git a/android/app/src/xhj/res/values-en-rUS/string.xml b/android/app/src/xhj/res/values-en-rUS/string.xml new file mode 100644 index 00000000..7c497348 --- /dev/null +++ b/android/app/src/xhj/res/values-en-rUS/string.xml @@ -0,0 +1,4 @@ + + + Star Lock + \ No newline at end of file diff --git a/android/app/src/xhj/res/values-zh-rCN/string.xml b/android/app/src/xhj/res/values-zh-rCN/string.xml new file mode 100644 index 00000000..384ea2dd --- /dev/null +++ b/android/app/src/xhj/res/values-zh-rCN/string.xml @@ -0,0 +1,4 @@ + + + 星星锁 + \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 4f61f0ae..c5934dd1 100755 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -7,7 +7,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - $(BUNDLE_DISPLAY_NAME) + $(PRODUCT_NAME) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - $(BUNDLE_NAME) + $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString diff --git a/ios/Runner/InfoPlist.xcstrings b/ios/Runner/InfoPlist.xcstrings new file mode 100644 index 00000000..449697b7 --- /dev/null +++ b/ios/Runner/InfoPlist.xcstrings @@ -0,0 +1,23 @@ +{ + "sourceLanguage" : "zh-Hans", + "strings" : { + "CFBundleDisplayName" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Star Lock" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "星锁" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/ios/Runner/en.lproj/InfoPlist.strings b/ios/Runner/en.lproj/InfoPlist.strings new file mode 100644 index 00000000..42bf8e95 --- /dev/null +++ b/ios/Runner/en.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* + InfoPlist.strings + Runner + + Created by mac on 2024/11/21. + +*/ +"AppName"="Star Lock"; diff --git a/ios/Runner/zh-Hans.lproj/InfoPlist.strings b/ios/Runner/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 00000000..5b0ee9b4 --- /dev/null +++ b/ios/Runner/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* + InfoPlist.strings + Runner + + Created by mac on 2024/11/21. + +*/ +"AppName"="星锁"; diff --git a/lan/lan_keys.json b/lan/lan_keys.json index fbaba7eb..1f61126c 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1,22 +1,22 @@ { - "星锁":"星锁", - "锁通通":"锁通通", - "点击开锁,长按闭锁":"点击开锁,长按闭锁", - "考勤":"考勤", + "星锁": "星锁", + "锁通通": "锁通通", + "点击开锁,长按闭锁": "点击开锁,长按闭锁", + "考勤": "考勤", "考勤设置": "考勤设置", - "电子钥匙":"电子钥匙", + "电子钥匙": "电子钥匙", "添加卡": "添加卡", "卡号": "卡号", "添加指纹": "添加指纹", "指纹号": "指纹号", "遥控": "遥控", "添加人脸": "添加人脸", - "门锁日志":"门锁日志", + "门锁日志": "门锁日志", "密码号": "密码号", - "添加者":"添加者", - "添加时间":"添加时间", - "重置":"重置", - "请输入手机号或者邮箱":"请输入手机号或者邮箱", + "添加者": "添加者", + "添加时间": "添加时间", + "重置": "重置", + "请输入手机号或者邮箱": "请输入手机号或者邮箱", "工作时间": "工作时间", "工作日设置": "工作日设置", "星期一": "星期一", @@ -40,17 +40,17 @@ "周五": "周五", "周六": "周六", "周日": "周日", - "群发钥匙":"群发钥匙", + "群发钥匙": "群发钥匙", "锁": "锁", - "请添加":"请添加", - "允许远程开锁":"允许远程开锁", + "请添加": "请添加", + "允许远程开锁": "允许远程开锁", "请输入验证码": "请输入验证码", "获取密码": "获取密码", - "请给密码命名":"请给密码命名", - "密码有限期为6个小时,只能使用一次":"密码有限期为6个小时,只能使用一次", - "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加":"手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加", + "请给密码命名": "请给密码命名", + "密码有限期为6个小时,只能使用一次": "密码有限期为6个小时,只能使用一次", + "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加": "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加", "获取": "获取", - "添加":"添加", + "添加": "添加", "删除公司": "删除公司", "密码详情": "密码详情", "修改密码": "修改密码", @@ -60,155 +60,155 @@ "添加手掌": "添加手掌", "请输入员工账号": "请输入员工账号", "批量授权锁": "批量授权锁", - "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人":"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人", - "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。", + "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人", + "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。", "排列方式": "排列方式", "早到榜": "早到榜", "迟到榜": "迟到榜", "当前模式": "当前模式", - "勤奋榜":"勤奋榜", + "勤奋榜": "勤奋榜", "延迟时间": "延迟时间", "经过以上设定的时间,锁会自动关闭。开启或修改设置后,请先开一次锁,使时间生效。": "经过以上设定的时间,锁会自动关闭。开启或修改设置后,请先开一次锁,使时间生效。", "时间": "时间", "开始时间": "开始时间", "结束时间": "结束时间", "工作时间设置": "工作时间设置", - "常开模式":"常开模式", + "常开模式": "常开模式", "常开时间": "常开时间", "常开日期": "常开日期", "添加员工": "添加员工", "编辑员工": "编辑员工", - "节假日":"节假日", - "打卡方式":"打卡方式", - "员工是否有钥匙":"员工是否有钥匙", - "上班时间":"上班时间", - "下班时间":"下班时间", + "节假日": "节假日", + "打卡方式": "打卡方式", + "员工是否有钥匙": "员工是否有钥匙", + "上班时间": "上班时间", + "下班时间": "下班时间", "本周": "本周", - "单休":"单休", - "双休":"双休", - "单双休":"单双休", - "年":"年", - "月":"月", - "放假日期":"放假日期", - "补班日期":"补班日期", - "添加假日":"添加假日", - "开始日期":"开始日期", - "必填":"必填", - "结束日期":"结束日期", - "日榜":"日榜", - "月榜":"月榜", - "考勤记录":"考勤记录", - "假日信息":"假日信息", - "基本信息":"基本信息", - "无线键盘":"无线键盘", + "单休": "单休", + "双休": "双休", + "单双休": "单双休", + "年": "年", + "月": "月", + "放假日期": "放假日期", + "补班日期": "补班日期", + "添加假日": "添加假日", + "开始日期": "开始日期", + "必填": "必填", + "结束日期": "结束日期", + "日榜": "日榜", + "月榜": "月榜", + "考勤记录": "考勤记录", + "假日信息": "假日信息", + "基本信息": "基本信息", + "无线键盘": "无线键盘", "选择无线键盘": "选择无线键盘", - "门磁":"门磁", - "自动闭锁":"自动闭锁", - "锁声音":"锁声音", - "防撬报警":"防撬报警", - "重置键":"重置键", - "锁时间":"锁时间", - "诊断":"诊断", - "上传数据":"上传数据", - "导入其他锁数据":"导入其他锁数据", - "锁升级":"锁升级", - "标记房态":"标记房态", - "开锁提醒":"开锁提醒", - "微信二维码":"微信二维码", + "门磁": "门磁", + "自动闭锁": "自动闭锁", + "锁声音": "锁声音", + "防撬报警": "防撬报警", + "重置键": "重置键", + "锁时间": "锁时间", + "诊断": "诊断", + "上传数据": "上传数据", + "导入其他锁数据": "导入其他锁数据", + "锁升级": "锁升级", + "标记房态": "标记房态", + "开锁提醒": "开锁提醒", + "微信二维码": "微信二维码", "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边": "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边", - "锁编号":"锁编号", - "电量":"电量", - "锁分组":"锁分组", - "选择分组":"选择分组", - "创建新分组":"创建新分组", - "管理员开锁密码":"管理员开锁密码", - "更新":"更新", - "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新":"电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新", - "当屏幕闪烁时,点击下一步":"当屏幕闪烁时,点击下一步", - "输入*529#或按设置键":"输入*529#或按设置键", - "长按重置键2秒":"长按重置键2秒", - "附近的设备":"附近的设备", - "暂无数据":"暂无数据", - "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁":"通过门磁可查询门的开、关状态。每把锁咳添加一个门磁", - "开始":"开始", - "全天":"全天", - "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。":"你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。", - "请选择锁音量":"请选择锁音量", - "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。":"功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。", - "低":"低", - "较低":"较低", - "中":"中", - "较高":"较高", - "高":"高", - "开启后,锁被撬动时,会发出报警声":"开启后,锁被撬动时,会发出报警声", - "关闭后,重置键无效,锁要通过app删除后才能重新添加":"关闭后,重置键无效,锁要通过app删除后才能重新添加", - "校准时间":"校准时间", - "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因":"诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因", - "上传":"上传", - "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待":"本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待", - "请选择要从哪把锁导入":"请选择要从哪把锁导入", - "有新版本":"有新版本", - "当前版本":"当前版本", - "升级":"升级", - "空闲":"空闲", - "已入住":"已入住", - "英文":"英文", - "简体中文":"简体中文", - "多语言":"多语言", - "添加锁":"添加锁", - "锁地址":"锁地址", - "选择锁类型":"选择锁类型", - "NFC无源锁":"NFC无源锁", - "添加设备":"添加设备", - "网关":"网关", - "客服":"客服", - "设置":"设置", - "更多设置":"更多设置", - "消息推送":"消息推送", - "锁用户管理":"锁用户管理", - "拥有的钥匙":"拥有的钥匙", - "批量授权":"批量授权", - "关联设备":"关联设备", - "关联姓名":"关联姓名", - "转移智能锁":"转移智能锁", - "选择锁":"选择锁", - "接收人信息":"接收人信息", - "转移网关":"转移网关", - "锁屏":"锁屏", - "已关闭":"已关闭", - "已开启":"已开启", - "开启":"开启", + "锁编号": "锁编号", + "电量": "电量", + "锁分组": "锁分组", + "选择分组": "选择分组", + "创建新分组": "创建新分组", + "管理员开锁密码": "管理员开锁密码", + "更新": "更新", + "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新": "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新", + "当屏幕闪烁时,点击下一步": "当屏幕闪烁时,点击下一步", + "输入*529#或按设置键": "输入*529#或按设置键", + "长按重置键2秒": "长按重置键2秒", + "附近的设备": "附近的设备", + "暂无数据": "暂无数据", + "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁": "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁", + "开始": "开始", + "全天": "全天", + "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。": "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。", + "请选择锁音量": "请选择锁音量", + "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。": "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。", + "低": "低", + "较低": "较低", + "中": "中", + "较高": "较高", + "高": "高", + "开启后,锁被撬动时,会发出报警声": "开启后,锁被撬动时,会发出报警声", + "关闭后,重置键无效,锁要通过app删除后才能重新添加": "关闭后,重置键无效,锁要通过app删除后才能重新添加", + "校准时间": "校准时间", + "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因": "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因", + "上传": "上传", + "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待": "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待", + "请选择要从哪把锁导入": "请选择要从哪把锁导入", + "有新版本": "有新版本", + "当前版本": "当前版本", + "升级": "升级", + "空闲": "空闲", + "已入住": "已入住", + "英文": "英文", + "简体中文": "简体中文", + "多语言": "多语言", + "添加锁": "添加锁", + "锁地址": "锁地址", + "选择锁类型": "选择锁类型", + "NFC无源锁": "NFC无源锁", + "添加设备": "添加设备", + "网关": "网关", + "客服": "客服", + "设置": "设置", + "更多设置": "更多设置", + "消息推送": "消息推送", + "锁用户管理": "锁用户管理", + "拥有的钥匙": "拥有的钥匙", + "批量授权": "批量授权", + "关联设备": "关联设备", + "关联姓名": "关联姓名", + "转移智能锁": "转移智能锁", + "选择锁": "选择锁", + "接收人信息": "接收人信息", + "转移网关": "转移网关", + "锁屏": "锁屏", + "已关闭": "已关闭", + "已开启": "已开启", + "开启": "开启", "确定要开启重置键?": "确定要开启重置键?", "确定要关闭重置键?": "确定要关闭重置键?", - "隐藏无效开锁权限":"隐藏无效开锁权限", - "APP开锁时需手机连网的锁":"APP开锁时需手机连网的锁", - "增值服务":"增值服务", - "关于":"关于", - "退出":"退出", - "删除账号":"删除账号", - "个人信息":"个人信息", - "头像":"头像", - "昵称":"昵称", + "隐藏无效开锁权限": "隐藏无效开锁权限", + "APP开锁时需手机连网的锁": "APP开锁时需手机连网的锁", + "增值服务": "增值服务", + "关于": "关于", + "退出": "退出", + "删除账号": "删除账号", + "个人信息": "个人信息", + "头像": "头像", + "昵称": "昵称", "请输入昵称": "请输入昵称", - "修改昵称":"修改昵称", - "修改账号":"修改账号", - "重置密码":"重置密码", - "安全问题":"安全问题", - "为了你的账号安全,修改账号前请先使用验证码验证":"为了你的账号安全,修改账号前请先使用验证码验证", - "请输入新账号":"请输入新账号", - "找回密码和登录新设备时,可通过绑定的手机验证":"找回密码和登录新设备时,可通过绑定的手机验证", - "找回密码和登录新设备时,可通过绑定的邮箱验证":"找回密码和登录新设备时,可通过绑定的邮箱验证", - "原密码":"原密码", - "新密码":"新密码", - "确认密码":"确认密码", - "当你手机丢了,可以通过回答设置的安全问题来登录新设备":"当你手机丢了,可以通过回答设置的安全问题来登录新设备", - "问题一":"问题一", - "问题二":"问题二", - "问题三":"问题三", - "请输入你的答案":"请输入你的答案", - "即将到期":"即将到期", - "去授权":"去授权", - "修改名称":"修改名称", + "修改昵称": "修改昵称", + "修改账号": "修改账号", + "重置密码": "重置密码", + "安全问题": "安全问题", + "为了你的账号安全,修改账号前请先使用验证码验证": "为了你的账号安全,修改账号前请先使用验证码验证", + "请输入新账号": "请输入新账号", + "找回密码和登录新设备时,可通过绑定的手机验证": "找回密码和登录新设备时,可通过绑定的手机验证", + "找回密码和登录新设备时,可通过绑定的邮箱验证": "找回密码和登录新设备时,可通过绑定的邮箱验证", + "原密码": "原密码", + "新密码": "新密码", + "确认密码": "确认密码", + "当你手机丢了,可以通过回答设置的安全问题来登录新设备": "当你手机丢了,可以通过回答设置的安全问题来登录新设备", + "问题一": "问题一", + "问题二": "问题二", + "问题三": "问题三", + "请输入你的答案": "请输入你的答案", + "即将到期": "即将到期", + "去授权": "去授权", + "修改名称": "修改名称", "状态": "状态", "WiFi名称": "WiFi名称", "网络MAC": "网络MAC", @@ -237,101 +237,101 @@ "请输入IP地址": "请输入IP地址", "请输入子网掩码": "请输入子网掩码", "请输入默认网关": "请输入默认网关", - "所有锁":"所有锁", - "搜索所有类型的锁":"搜索所有类型的锁", - "门锁":"门锁", - "挂锁":"挂锁", - "保险箱锁":"保险箱锁", - "智能门禁":"智能门禁", - "车位锁":"车位锁", - "摸亮触摸屏":"摸亮触摸屏", - "摸亮触摸屏,锁进入可添加状态,点击下一步":"摸亮触摸屏,锁进入可添加状态,点击下一步", - "附近的锁":"附近的锁", - "如需修改名字请重新命名,点击确定添加锁":"如需修改名字请重新命名,点击确定添加锁", - "添加锁时,手机必须在锁旁边":"添加锁时,手机必须在锁旁边", - "登录":"登录", - "注册":"注册", - "我已阅读并同意":"我已阅读并同意", - "验证码":"验证码", - "密码必须是8-20位,至少包括数字/字母/符号中的2种":"密码必须是8-20位,至少包括数字/字母/符号中的2种", - "手机":"手机", - "邮箱":"邮箱", + "所有锁": "所有锁", + "搜索所有类型的锁": "搜索所有类型的锁", + "门锁": "门锁", + "挂锁": "挂锁", + "保险箱锁": "保险箱锁", + "智能门禁": "智能门禁", + "车位锁": "车位锁", + "摸亮触摸屏": "摸亮触摸屏", + "摸亮触摸屏,锁进入可添加状态,点击下一步": "摸亮触摸屏,锁进入可添加状态,点击下一步", + "附近的锁": "附近的锁", + "如需修改名字请重新命名,点击确定添加锁": "如需修改名字请重新命名,点击确定添加锁", + "添加锁时,手机必须在锁旁边": "添加锁时,手机必须在锁旁边", + "登录": "登录", + "注册": "注册", + "我已阅读并同意": "我已阅读并同意", + "验证码": "验证码", + "密码必须是8-20位,至少包括数字/字母/符号中的2种": "密码必须是8-20位,至少包括数字/字母/符号中的2种", + "手机": "手机", + "邮箱": "邮箱", "请输入邮箱": "请输入邮箱", - "国家/地区":"国家/地区", + "国家/地区": "国家/地区", "你所在的国家/地区": "你所在的国家/地区", "选择国家/地区": "你所在的国家/地区", - "获取验证码":"获取验证码", - "商务合作":"商务合作", - "电脑网页版":"电脑网页版", - "酒店系统":"酒店系统", - "说明书网页版":"说明书网页版", - "高级功能":"高级功能", - "记录保存":"记录保存", - "您可通过短信将密码、电子钥匙信息发给接收人。":"您可通过短信将密码、电子钥匙信息发给接收人。", - "您可通过邮件将密码、电子钥匙信息发给接收人。":"您可通过邮件将密码、电子钥匙信息发给接收人。", - "购买实名认证提示":"购买实名认证提示", - "请选择你希望的实名认证频次":"请选择你希望的实名认证频次", - "仅首次":"仅首次", - "每日一次":"每日一次", - "每周一次":"每周一次", - "每月一次":"每月一次", - "当前状态":"当前状态", - "试用中":"试用中", - "高级功能权益内容":"高级功能权益内容", - "短信模板":"短信模板", - "邮件模板":"邮件模板", - "发卡工具":"发卡工具", - "购买高级功能须知":"购买高级功能须知", - "购买高级功能提示":"购买高级功能提示", - "免费体验":"免费体验", - "立即开通":"立即开通", - "购买短信":"购买短信", - "购买邮件":"购买邮件", - "购买实名认证次数":"购买实名认证次数", - "开通高级功能":"开通高级功能", - "选择套餐":"选择套餐", - "支付方式":"支付方式", - "支付宝":"支付宝", - "去支付":"去支付", - "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人":"你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人", - "高级功能仅能用于你自己的锁":"高级功能仅能用于你自己的锁", - "新建模板":"新建模板", - "类型":"类型", - "模版内容":"模版内容", - "预览":"预览", - "房间名":"房间名", - "预计产生短信条数":"预计产生短信条数", - "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。":"功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。", - "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁":"对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁", - "配置WiFi":"配置WiFi", - "请输入WiFi名字":"请输入WiFi名字", - "WiFi配网":"WiFi配网", - "胁迫卡":"胁迫卡", - "员工是否有密码":"员工是否有密码", - "员工是否有卡":"员工是否有卡", - "员工是否有指纹":"员工是否有指纹", - "获取钥匙":"获取钥匙", - "获取卡":"获取卡", - "获取指纹":"获取指纹", - "安全验证":"安全验证", - "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?":"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?", - "监控":"监控", - "视频日志":"视频日志", - "网关设备":"网关设备", - "开门器":"开门器", - "面容开锁":"面容开锁", - "开门方向设置":"开门方向设置", - "电机功率设置":"电机功率设置", - "开锁时是否需联网":"开锁时是否需联网", - "选择要加入分组的锁":"选择要加入分组的锁", - "锁数量":"锁数量", - "小米IOT平台":"小米IOT平台", + "获取验证码": "获取验证码", + "商务合作": "商务合作", + "电脑网页版": "电脑网页版", + "酒店系统": "酒店系统", + "说明书网页版": "说明书网页版", + "高级功能": "高级功能", + "记录保存": "记录保存", + "您可通过短信将密码、电子钥匙信息发给接收人。": "您可通过短信将密码、电子钥匙信息发给接收人。", + "您可通过邮件将密码、电子钥匙信息发给接收人。": "您可通过邮件将密码、电子钥匙信息发给接收人。", + "购买实名认证提示": "购买实名认证提示", + "请选择你希望的实名认证频次": "请选择你希望的实名认证频次", + "仅首次": "仅首次", + "每日一次": "每日一次", + "每周一次": "每周一次", + "每月一次": "每月一次", + "当前状态": "当前状态", + "试用中": "试用中", + "高级功能权益内容": "高级功能权益内容", + "短信模板": "短信模板", + "邮件模板": "邮件模板", + "发卡工具": "发卡工具", + "购买高级功能须知": "购买高级功能须知", + "购买高级功能提示": "购买高级功能提示", + "免费体验": "免费体验", + "立即开通": "立即开通", + "购买短信": "购买短信", + "购买邮件": "购买邮件", + "购买实名认证次数": "购买实名认证次数", + "开通高级功能": "开通高级功能", + "选择套餐": "选择套餐", + "支付方式": "支付方式", + "支付宝": "支付宝", + "去支付": "去支付", + "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人": "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人", + "高级功能仅能用于你自己的锁": "高级功能仅能用于你自己的锁", + "新建模板": "新建模板", + "类型": "类型", + "模版内容": "模版内容", + "预览": "预览", + "房间名": "房间名", + "预计产生短信条数": "预计产生短信条数", + "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。": "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。", + "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁": "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁", + "配置WiFi": "配置WiFi", + "请输入WiFi名字": "请输入WiFi名字", + "WiFi配网": "WiFi配网", + "胁迫卡": "胁迫卡", + "员工是否有密码": "员工是否有密码", + "员工是否有卡": "员工是否有卡", + "员工是否有指纹": "员工是否有指纹", + "获取钥匙": "获取钥匙", + "获取卡": "获取卡", + "获取指纹": "获取指纹", + "安全验证": "安全验证", + "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?", + "监控": "监控", + "视频日志": "视频日志", + "网关设备": "网关设备", + "开门器": "开门器", + "面容开锁": "面容开锁", + "开门方向设置": "开门方向设置", + "电机功率设置": "电机功率设置", + "开锁时是否需联网": "开锁时是否需联网", + "选择要加入分组的锁": "选择要加入分组的锁", + "锁数量": "锁数量", + "小米IOT平台": "小米IOT平台", "面容开锁设置": "面容开锁设置", "感应距离": "感应距离", "防误开": "防误开", "防误开已关闭,关门后仍可使用面容开锁": "防误开已关闭,关门后仍可使用面容开锁", "添加和使用面容开锁时": "添加和使用面容开锁时", - "添加和使用面容开锁时提示":"添加和使用面容开锁时提示", + "添加和使用面容开锁时提示": "添加和使用面容开锁时提示", "秒": "秒", "请根据门锁实际情况,请谨慎选择电机功率:": "请根据门锁实际情况,请谨慎选择电机功率:", "小功率:": "小功率:", @@ -344,43 +344,43 @@ "判断方法:": "判断方法:", "判断方法内容": "判断方法内容", "录像时段": "录像时段", - "密码":"密码", - "卡":"卡", - "指纹":"指纹", - "人脸":"人脸", - "配件商城":"配件商城", - "公司名称":"公司名称", - "请输入公司名字":"请输入公司名字", - "提示":"提示", - "是否删除?":"是否删除?", - "员工信息":"员工信息", - "员工":"员工", - "打卡方式无效":"打卡方式无效", - "中国":"中国", - "选择钥匙":"选择钥匙", - "编辑":"编辑", - "无":"无", - "有":"有", - "请输入姓名":"请输入姓名", - "获取人脸":"获取人脸", - "选择密码":"选择密码", - "选择卡":"选择卡", - "选择指纹":"选择指纹", - "选择人脸":"选择人脸", - "员工是否有人脸":"员工是否有人脸", - "同时删除员工钥匙":"同时删除员工钥匙", - "删除":"删除", - "确定要删除员工吗?":"确定要删除员工吗?", - "月统计":"月统计", - "迟到":"迟到", - "早退":"早退", - "未打卡":"未打卡", - "钥匙将在":"钥匙将在", - "天后失效":"天后失效", - "电量更新时间:":"电量更新时间:", - "新增配件":"新增配件", - "钥匙不可用":"钥匙不可用", - "正在开锁中...":"正在开锁中...", + "密码": "密码", + "卡": "卡", + "指纹": "指纹", + "人脸": "人脸", + "配件商城": "配件商城", + "公司名称": "公司名称", + "请输入公司名字": "请输入公司名字", + "提示": "提示", + "是否删除?": "是否删除?", + "员工信息": "员工信息", + "员工": "员工", + "打卡方式无效": "打卡方式无效", + "中国": "中国", + "选择钥匙": "选择钥匙", + "编辑": "编辑", + "无": "无", + "有": "有", + "请输入姓名": "请输入姓名", + "获取人脸": "获取人脸", + "选择密码": "选择密码", + "选择卡": "选择卡", + "选择指纹": "选择指纹", + "选择人脸": "选择人脸", + "员工是否有人脸": "员工是否有人脸", + "同时删除员工钥匙": "同时删除员工钥匙", + "删除": "删除", + "确定要删除员工吗?": "确定要删除员工吗?", + "月统计": "月统计", + "迟到": "迟到", + "早退": "早退", + "未打卡": "未打卡", + "钥匙将在": "钥匙将在", + "天后失效": "天后失效", + "电量更新时间:": "电量更新时间:", + "新增配件": "新增配件", + "钥匙不可用": "钥匙不可用", + "正在开锁中...": "正在开锁中...", "你的钥匙": "你的钥匙", "常开模式启动!长按闭锁": "常开模式启动!长按闭锁", "演示模式": "演示模式", @@ -563,10 +563,10 @@ "厂商": "厂商", "型号": "型号", "密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。": "密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。", - "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。":"密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。", + "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。": "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。", "密码生成后,请在当日23:59前使用,否则过0点后失效。": "密码生成后,请在当日23:59前使用,否则过0点后失效。", "清空密码底部提示": "清空密码底部提示", - "密码不一致哦":"密码不一致哦", + "密码不一致哦": "密码不一致哦", "相机": "相机", "相册": "相册", "读写": "读写", @@ -583,137 +583,137 @@ "请手动在系统设置中开启": "请手动在系统设置中开启", "权限以继续使用应用": "权限以继续使用应用。", "去设置": "去设置", - "虹膜":"虹膜", - "手掌":"手掌", - "商城":"mall", - "我的":"my", - "微信公众号推送":"微信公众号推送", - "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置":"开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置", - "蓝牙":"蓝牙", - "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息", - "请输入Email":"请输入Email", - "请输入手机号":"请输入手机号", - "家人到家":"家人到家", - "添加家人":"添加家人", - "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。":"若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。", - "消息提醒":"消息提醒", - "开门通知":"开门通知", - "N天未开门":"N天未开门", - "门未关好":"门未关好", - "防拆报警":"防拆报警", - "低电量提醒":"低电量提醒", - "胁迫开门":"胁迫开门", - "有人按门铃":"有人按门铃", - "有人出现在门口":"有人出现在门口", - "提醒方式":"提醒方式", - "开门方式":"开门方式", - "请选择":"请选择", - "家人":"家人", - "保存":"保存", - "APP推送":"APP推送", - "管理员":"管理员", - "未启用":"未启用", - "已启用":"已启用", - "省电模式":"省电模式", - "逗留抓拍模式":"逗留抓拍模式", - "实时监控模式":"实时监控模式", - "自定义模式":"自定义模式", - "猫眼设置":"猫眼设置", - "猫眼工作模式":"猫眼工作模式", - "自动亮屏":"自动亮屏", - "亮屏持续时间":"亮屏持续时间", - "逗留警告":"逗留警告", - "异常警告":"异常警告", - "短信提醒":"短信提醒", - "邮件提醒":"邮件提醒", - "关锁":"Close Lock", - "功能":"Function", - "配件":"Parts", - "N天未开门提醒":"N天未开门提醒", - "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网":"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网", - "胁迫指纹":"胁迫指纹", - "指纹列表":"指纹列表", - "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网":"经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网", - "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。":"打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。", - "未开门时间":"未开门时间", - "添加和使用面容开锁时:":"添加和使用面容开锁时:", - "云存":"云存", - "本地":"本地", - "3天滚动储存":"3天滚动储存", - "去升级":"去升级", - "下载列表":"下载列表", - "已下载":"已下载", - "全部视频":"全部视频", - "已为本设备免费提供3大滚动视频储存服务":"已为本设备免费提供3大滚动视频储存服务", - "视频播放":"视频播放", - "全选":"全选", - "请选择要删除的视频":"请选择要删除的视频", - "请选择要下载的视频":"请选择要下载的视频", - "欢迎使用":"欢迎使用", + "虹膜": "虹膜", + "手掌": "手掌", + "商城": "mall", + "我的": "my", + "微信公众号推送": "微信公众号推送", + "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置": "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置", + "蓝牙": "蓝牙", + "需要访问蓝牙权限才能使用添加钥匙功能的位置信息": "需要访问蓝牙权限才能使用添加钥匙功能的位置信息", + "请输入Email": "请输入Email", + "请输入手机号": "请输入手机号", + "家人到家": "家人到家", + "添加家人": "添加家人", + "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。": "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。", + "消息提醒": "消息提醒", + "开门通知": "开门通知", + "N天未开门": "N天未开门", + "门未关好": "门未关好", + "防拆报警": "防拆报警", + "低电量提醒": "低电量提醒", + "胁迫开门": "胁迫开门", + "有人按门铃": "有人按门铃", + "有人出现在门口": "有人出现在门口", + "提醒方式": "提醒方式", + "开门方式": "开门方式", + "请选择": "请选择", + "家人": "家人", + "保存": "保存", + "APP推送": "APP推送", + "管理员": "管理员", + "未启用": "未启用", + "已启用": "已启用", + "省电模式": "省电模式", + "逗留抓拍模式": "逗留抓拍模式", + "实时监控模式": "实时监控模式", + "自定义模式": "自定义模式", + "猫眼设置": "猫眼设置", + "猫眼工作模式": "猫眼工作模式", + "自动亮屏": "自动亮屏", + "亮屏持续时间": "亮屏持续时间", + "逗留警告": "逗留警告", + "异常警告": "异常警告", + "短信提醒": "短信提醒", + "邮件提醒": "邮件提醒", + "关锁": "Close Lock", + "功能": "Function", + "配件": "Parts", + "N天未开门提醒": "N天未开门提醒", + "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网": "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网", + "胁迫指纹": "胁迫指纹", + "指纹列表": "指纹列表", + "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网": "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网", + "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。": "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。", + "未开门时间": "未开门时间", + "添加和使用面容开锁时:": "添加和使用面容开锁时:", + "云存": "云存", + "本地": "本地", + "3天滚动储存": "3天滚动储存", + "去升级": "去升级", + "下载列表": "下载列表", + "已下载": "已下载", + "全部视频": "全部视频", + "已为本设备免费提供3大滚动视频储存服务": "已为本设备免费提供3大滚动视频储存服务", + "视频播放": "视频播放", + "全选": "全选", + "请选择要删除的视频": "请选择要删除的视频", + "请选择要下载的视频": "请选择要下载的视频", + "欢迎使用": "欢迎使用", "用户协议和隐私政策概要": "用户协议和隐私政策概要", "协议概要": "协议概要", - "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读":"感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读", - "《用户协议》":"《用户协议》", - "和":"和", + "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读": "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读", + "《用户协议》": "《用户协议》", + "和": "和", "《隐私政策》": "《隐私政策》", "的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。": "的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。", - "不同意":"不同意", - "同意":"同意", - "该功能是高级功能,请开通后再使用":"该功能是高级功能,请开通后再使用", - "常用程序":"常用程序", - "该锁已被重置":"该锁已被重置", - "需要访问读写权限才能使用手动升级固件":"需要访问读写权限才能使用手动升级固件", - "错误D固件,请选择正确的文件":"错误固件,请选择正确的文件", - "非SYD固件,请选择正确的文件":"非SYD固件,请选择正确的文件", - "文件校验失败 0x01":"文件校验失败 0x01", - "解析元数据失败,请选择正确的文件":"解析元数据失败,请选择正确的文件", - "文件校验失败 0x02":"文件校验失败 0x02", - "文件校验失败 0x03":"文件校验失败 0x03", - "固件升级完成":"固件升级完成", - "记录":"记录", - "开通高级功能后才可以对锁进行管理":"开通高级功能后才可以对锁进行管理", - "去开通":"去开通", - "实名认证":"实名认证", - "当前剩余数量":"当前剩余数量", - "购买":"购买", - "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用", - "退出添加":"退出添加", - "管理员已满":"管理员已满", + "不同意": "不同意", + "同意": "同意", + "该功能是高级功能,请开通后再使用": "该功能是高级功能,请开通后再使用", + "常用程序": "常用程序", + "该锁已被重置": "该锁已被重置", + "需要访问读写权限才能使用手动升级固件": "需要访问读写权限才能使用手动升级固件", + "错误D固件,请选择正确的文件": "错误固件,请选择正确的文件", + "非SYD固件,请选择正确的文件": "非SYD固件,请选择正确的文件", + "文件校验失败 0x01": "文件校验失败 0x01", + "解析元数据失败,请选择正确的文件": "解析元数据失败,请选择正确的文件", + "文件校验失败 0x02": "文件校验失败 0x02", + "文件校验失败 0x03": "文件校验失败 0x03", + "固件升级完成": "固件升级完成", + "记录": "记录", + "开通高级功能后才可以对锁进行管理": "开通高级功能后才可以对锁进行管理", + "去开通": "去开通", + "实名认证": "实名认证", + "当前剩余数量": "当前剩余数量", + "购买": "购买", + "实名认证为付费功能,请购买后再使用": "实名认证为付费功能,请购买后再使用", + "退出添加": "退出添加", + "管理员已满": "管理员已满", "用户已满": "用户已满", "锁上面添加指纹已满": "锁上面添加指纹已满", "指纹已存在": "指纹已存在", "锁上面添加人脸已满": "锁上面添加人脸已满", "人脸已存在": "人脸已存在", - "锁上面添加卡已满":"锁上面添加卡已满", + "锁上面添加卡已满": "锁上面添加卡已满", "卡已存在": "卡已存在", "锁上面添加密码已满": "锁上面添加密码已满", "密码已存在": "密码已存在", "请输入密码": "请输入密码", "暂无密码,无需重置": "暂无密码,无需重置", - "真实姓名":"真实姓名", - "身份证号":"身份证号", - "请输入真实姓名":"请输入真实姓名", - "请输入身份证号":"请输入身份证号", - "请输入身份证号和真实姓名":"请输入身份证号和真实姓名", - "点击返回设备配对":"点击返回设备配对", - "无法连接?尝试升级":"无法连接?尝试升级", - "固件升级提示":"固件升级提示", - "请先获取固件文件到手机本地,再选择升级":"请先获取固件文件到手机本地,再选择升级", - "固件升级中":"固件升级中", - "取消升级":"取消升级", - "固件传输中":"固件传输中", - "关闭":"关闭", - "传输中'":"传输中", - "操作记录":"操作记录", - "修改姓名":"修改姓名", - "传输中":"传输中", - "发送人":"发送人", - "发送时间":"发送时间", - "钥匙详情":"钥匙详情", - "姓名":"姓名", - "发送":"发送", - "请确认姓名全名和身份证号码是否正确":"请确认姓名全名和身份证号码是否正确", - "传输期间请勿离开当前页面":"传输期间请勿离开当前页面", + "真实姓名": "真实姓名", + "身份证号": "身份证号", + "请输入真实姓名": "请输入真实姓名", + "请输入身份证号": "请输入身份证号", + "请输入身份证号和真实姓名": "请输入身份证号和真实姓名", + "点击返回设备配对": "点击返回设备配对", + "无法连接?尝试升级": "无法连接?尝试升级", + "固件升级提示": "固件升级提示", + "请先获取固件文件到手机本地,再选择升级": "请先获取固件文件到手机本地,再选择升级", + "固件升级中": "固件升级中", + "取消升级": "取消升级", + "固件传输中": "固件传输中", + "关闭": "关闭", + "传输中'": "传输中", + "操作记录": "操作记录", + "修改姓名": "修改姓名", + "传输中": "传输中", + "发送人": "发送人", + "发送时间": "发送时间", + "钥匙详情": "钥匙详情", + "姓名": "姓名", + "发送": "发送", + "请确认姓名全名和身份证号码是否正确": "请确认姓名全名和身份证号码是否正确", + "传输期间请勿离开当前页面": "传输期间请勿离开当前页面", "机型": "机型", "硬件版本": "硬件版本", "固件版本": "固件版本", @@ -724,30 +724,30 @@ "操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。", "如果是全自动锁,请使屏幕变亮": "如果是全自动锁,请使屏幕变亮", "正在尝试闭锁……": "正在尝试闭锁……", - "清空记录":"清空记录", - "是否要删除操作记录?":"是否要删除操作记录?", - "被删除的记录不能恢复":"被删除的记录不能恢复", - "全部事件":"全部事件", - "开锁事件":"开锁事件", - "异常事件":"异常事件", - "门铃事件":"门铃事件", - "视频事件":"视频事件", - "请开启蓝牙":"请开启蓝牙", - "请选择有效日":"请选择有效日", + "清空记录": "清空记录", + "是否要删除操作记录?": "是否要删除操作记录?", + "被删除的记录不能恢复": "被删除的记录不能恢复", + "全部事件": "全部事件", + "开锁事件": "开锁事件", + "异常事件": "异常事件", + "门铃事件": "门铃事件", + "视频事件": "视频事件", + "请开启蓝牙": "请开启蓝牙", + "请选择有效日": "请选择有效日", "公司名字长度不能小于 6 ": "公司名字长度不能小于 6 ", "已是最新版本": "已是最新版本", - "一":"一", - "二":"二", - "三":"三", - "四":"四", - "五":"五", - "六":"六", - "日":"日", - "新建短信模版":"新建短信模版", - "新建邮件模版":"新建邮件模版", - "自定义短信模版":"自定义短信模版", - "自定义邮件模版":"自定义邮件模版", - "名称":"名称", + "一": "一", + "二": "二", + "三": "三", + "四": "四", + "五": "五", + "六": "六", + "日": "日", + "新建短信模版": "新建短信模版", + "新建邮件模版": "新建邮件模版", + "自定义短信模版": "自定义短信模版", + "自定义邮件模版": "自定义邮件模版", + "名称": "名称", "星星锁": "星星锁", "无考勤记录": "无考勤记录", "大家干劲十足": "大家干劲十足", @@ -756,7 +756,7 @@ "确认国家或地区": "确认国家或地区", "我知道了": "我知道了", "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。", - "开启后,可通过长按锁上的设置键重新上电,用APP重新添加":"开启后,可通过长按锁上的设置键重新上电,用APP重新添加", + "开启后,可通过长按锁上的设置键重新上电,用APP重新添加": "开启后,可通过长按锁上的设置键重新上电,用APP重新添加", "已有": "已有", "新增": "新增", "账号格式错误": "账号格式错误", @@ -784,21 +784,21 @@ "该已锁被删除": "该已锁被删除", "授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限", "添加授权管理员": "添加授权管理员", - "导出记录":"导出记录", - "选择时间段":"选择时间段", - "导出":"导出", - "批量导出":"批量导出", - "读取记录":"读取记录", - "手机需联网":"手机需联网", - "设备":"设备", - "消息":"消息", - "智能分析":"智能分析", - "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息", - "系统设置":"系统设置", - "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", - "导出操作记录":"导出操作记录", - "立即查看":"立即查看", - "导出成功":"导出成功", + "导出记录": "导出记录", + "选择时间段": "选择时间段", + "导出": "导出", + "批量导出": "批量导出", + "读取记录": "读取记录", + "手机需联网": "手机需联网", + "设备": "设备", + "消息": "消息", + "智能分析": "智能分析", + "精准识别设备事件,过滤无效信息": "精准识别设备事件,过滤无效信息", + "系统设置": "系统设置", + "系统的全局配置在此项内进行设置": "系统的全局配置在此项内进行设置", + "导出操作记录": "导出操作记录", + "立即查看": "立即查看", + "导出成功": "导出成功", "发送钥匙": "发送钥匙", "进度": "进度", "失败": "失败", @@ -931,7 +931,7 @@ "或发生异常事件时": "或发生异常事件时", "逗留达到10秒": "逗留达到10秒", "约1.5米": "约1.5米", - "随时":"随时", + "随时": "随时", "立即录像": "立即录像", "录像时机": "录像时机", "有人出现时录像": "有人出现时录像", @@ -1087,7 +1087,8 @@ "离线": "离线", "购买记录": "购买记录", "使用记录": "使用记录", - "失效时间要大于当前时间": "失效时间要大于当前时间", - "修改名字": "修改名字" + "修改名字": "修改名字", + "时": "时", + "分": "分" } diff --git a/lan/lan_zh.json b/lan/lan_zh.json index e65252ab..427d8af0 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -734,13 +734,13 @@ "请选择有效日": "请选择有效日", "公司名字长度不能小于 6 ": "公司名字长度不能小于 6 ", "已是最新版本": "已是最新版本", - "一":"一", - "二":"二", - "三":"三", - "四":"四", - "五":"五", - "六":"六", - "日":"日", + "一": "一", + "二": "二", + "三": "三", + "四": "四", + "五": "五", + "六": "六", + "日": "日", "新建短信模版": "新建短信模版", "新建邮件模版": "新建邮件模版", "自定义短信模版": "自定义短信模版", @@ -782,21 +782,21 @@ "该已锁被删除": "该已锁被删除", "授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限", "添加授权管理员": "添加授权管理员", - "导出记录":"导出记录", - "选择时间段":"选择时间段", - "导出":"导出", - "批量导出":"批量导出", - "读取记录":"读取记录", - "手机需联网":"手机需联网", - "设备":"设备", - "消息":"消息", - "智能分析":"智能分析", - "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息", - "系统设置":"系统设置", - "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", - "导出操作记录":"导出操作记录", - "立即查看":"立即查看", - "导出成功":"导出成功", + "导出记录": "导出记录", + "选择时间段": "选择时间段", + "导出": "导出", + "批量导出": "批量导出", + "读取记录": "读取记录", + "手机需联网": "手机需联网", + "设备": "设备", + "消息": "消息", + "智能分析": "智能分析", + "精准识别设备事件,过滤无效信息": "精准识别设备事件,过滤无效信息", + "系统设置": "系统设置", + "系统的全局配置在此项内进行设置": "系统的全局配置在此项内进行设置", + "导出操作记录": "导出操作记录", + "立即查看": "立即查看", + "导出成功": "导出成功", "发送钥匙": "发送钥匙", "进度": "进度", "失败": "失败", @@ -929,7 +929,7 @@ "或发生异常事件时": "或发生异常事件时", "逗留达到10秒": "逗留达到10秒", "约1.5米": "约1.5米", - "随时":"随时", + "随时": "随时", "立即录像": "立即录像", "录像时机": "录像时机", "有人出现时录像": "有人出现时录像", @@ -1087,7 +1087,8 @@ "离线": "离线", "购买记录": "购买记录", "使用记录": "使用记录", - "失效时间要大于当前时间": "失效时间要大于当前时间", - "修改名字": "修改名字" + "修改名字": "修改名字", + "时": "时", + "分": "分" } diff --git a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart index 21415c8e..b504e3db 100755 --- a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart +++ b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart @@ -1,10 +1,12 @@ - import 'package:date_format/date_format.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_state.dart'; +import 'package:star_lock/tools/pickers/pickers.dart'; +import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; +import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/commonItem.dart'; @@ -43,9 +45,7 @@ class _CheckingInAddHolidaysPageState extends State { isHaveLine: true, isHaveRightWidget: true, setHeight: false, - rightWidget: getTFWidget( - '(${"必填".tr})', - maxSize: 50)), + rightWidget: getTFWidget('(${"必填".tr})', maxSize: 50)), Obx(() => CommonItem( leftTitel: '开始日期'.tr, rightTitle: state.beginDate.value.isEmpty @@ -54,19 +54,11 @@ class _CheckingInAddHolidaysPageState extends State { isHaveLine: true, isHaveDirection: false, action: () async { - await showDialog( - context: context, - builder: (BuildContext context) { - return ShowCalendar( - datePickerMode: DatePickerMode.day, - selectAction: (DateTime dateTime) { - final String beginDate = formatDate( - dateTime, [yyyy, '-', mm, '-', dd]); - state.beginDate.value = beginDate; - Get.back(); - // Navigator.of(context).pop(true); - }); - }); + Pickers.showDatePicker(context, + selectDate: PDuration.now(), + mode: DateMode.YMD, onConfirm: (PDuration p) { + state.beginDate.value = formatDate(p); + }); })), Obx(() => CommonItem( leftTitel: '结束日期'.tr, @@ -76,18 +68,11 @@ class _CheckingInAddHolidaysPageState extends State { isHaveLine: true, isHaveDirection: false, action: () async { - await showDialog( - context: context, - builder: (BuildContext context) { - return ShowCalendar( - datePickerMode: DatePickerMode.day, - selectAction: (DateTime dateTime) { - final String endDate = formatDate( - dateTime, [yyyy, '-', mm, '-', dd]); - state.endDate.value = endDate; - Get.back(); - }); - }); + Pickers.showDatePicker(context, + selectDate: PDuration.now(), + mode: DateMode.YMD, onConfirm: (PDuration p) { + state.endDate.value = formatDate(p); + }); })), Obx(() => CommonItem( leftTitel: '补班日期'.tr, @@ -95,18 +80,11 @@ class _CheckingInAddHolidaysPageState extends State { isHaveLine: false, isHaveDirection: false, action: () async { - await showDialog( - context: context, - builder: (BuildContext context) { - return ShowCalendar( - datePickerMode: DatePickerMode.day, - selectAction: (DateTime dateTime) { - final String makeUpWorkDate = formatDate( - dateTime, [yyyy, '-', mm, '-', dd]); - state.makeUpWorkDate.value = makeUpWorkDate; - Get.back(); - }); - }); + Pickers.showDatePicker(context, + selectDate: PDuration.now(), + mode: DateMode.YMD, onConfirm: (PDuration p) { + state.makeUpWorkDate.value = formatDate(p); + }); })), SizedBox( height: 50.w, @@ -168,4 +146,21 @@ class _CheckingInAddHolidaysPageState extends State { ), ); } + + String formatDate(PDuration p) { + if (p == null) { + throw ArgumentError('Input must be a valid DateTime object'); + } + + String formatPart(int part) { + return part.toString().padLeft(2, '0'); + } + + String monthFormatted = formatPart(p.month!); + String dayFormatted = formatPart(p.day!); + String hourFormatted = formatPart(p.hour!); + String minuteFormatted = formatPart(p.minute!); + + return '${p.year}-${monthFormatted}-${dayFormatted}'; + } } diff --git a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart index cb5cd16a..1f2515ca 100755 --- a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart +++ b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -219,8 +218,6 @@ class _CheckingInSetHolidaysPageState extends State { context, // 模式,详见下方 mode: DateMode.Y, - // 后缀 默认Suffix.normal(),为空的话Suffix() - suffix: Suffix(years: ' 年'.tr), // 样式 详见下方样式 pickerStyle: PickerStyle( cancelButton: GestureDetector( diff --git a/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart index d570b994..7ae01047 100755 --- a/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart +++ b/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart @@ -1,6 +1,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:date_format/date_format.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -101,106 +102,108 @@ class _CheckingInListPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ // SizedBox(width: 30.w,), - Row( - children: [ - SizedBox( - width: 20.w, - ), - GestureDetector( - onTap: () async { - final bool? isDemoMode = - await Storage.getBool(ifIsDemoModeOrNot); - if (isDemoMode == false) { - setState(() { - state.isDay.value = true; - final DateTime dateTime = - DateTime.fromMillisecondsSinceEpoch( - state.checkListDateTimestamp.value); - final String beginDate = - formatDate(dateTime, [mm, '-', dd]); - state.checkListDate.value = beginDate; - logic.loadDataByType(); - }); - } else { - // Get.toNamed(Routers.selectLockTypePage); - logic.showToast('演示模式'.tr); - } - }, - child: Container( - width: 90.w, - // height: 100.h, - color: Colors.white, - child: Obx(() => Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Text('日榜'.tr, - style: TextStyle( - color: state.isDay.value - ? AppColors.mainColor - : Colors.black, - fontSize: 22.sp)), - SizedBox(height: 10.h), - Visibility( - visible: state.isDay.value, - child: Container( - width: 20.w, - height: 2.h, - color: state.isDay.value - ? AppColors.mainColor - : Colors.black), - ) - ], - )), + Expanded( + child: Row( + children: [ + SizedBox( + width: 20.w, ), - ), - // SizedBox(width: 20.w,), - GestureDetector( - onTap: () async { - final bool? isDemoMode = - await Storage.getBool(ifIsDemoModeOrNot); - if (isDemoMode == false) { - setState(() { - state.isDay.value = false; - final DateTime dateTime = - DateTime.fromMillisecondsSinceEpoch( - state.checkListDateTimestamp.value); - final String beginDate = - formatDate(dateTime, [mm]); - state.checkListDate.value = beginDate; - logic.loadDataByType(); - }); - } else { - // Get.toNamed(Routers.selectLockTypePage); - logic.showToast('演示模式'.tr); - } - }, - child: Container( - width: 90.w, - // height: 100.h, - color: Colors.white, - child: Obx(() => Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Text('月榜'.tr, - style: TextStyle( - color: !state.isDay.value - ? AppColors.mainColor - : Colors.black, - fontSize: 22.sp)), - SizedBox(height: 10.h), - Visibility( - visible: !state.isDay.value, + GestureDetector( + onTap: () async { + final bool? isDemoMode = + await Storage.getBool(ifIsDemoModeOrNot); + if (isDemoMode == false) { + setState(() { + state.isDay.value = true; + final DateTime dateTime = + DateTime.fromMillisecondsSinceEpoch( + state.checkListDateTimestamp.value); + final String beginDate = + formatDate(dateTime, [mm, '-', dd]); + state.checkListDate.value = beginDate; + logic.loadDataByType(); + }); + } else { + // Get.toNamed(Routers.selectLockTypePage); + logic.showToast('演示模式'.tr); + } + }, + child: Container( + + // height: 100.h, + color: Colors.white, + child: Obx(() => Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text('日榜'.tr, + style: TextStyle( + color: state.isDay.value + ? AppColors.mainColor + : Colors.black, + fontSize: 22.sp)), + SizedBox(height: 10.h), + Visibility( + visible: state.isDay.value, child: Container( width: 20.w, height: 2.h, - color: !state.isDay.value + color: state.isDay.value ? AppColors.mainColor - : Colors.black)) - ], - )), + : Colors.black), + ) + ], + )), + ), ), - ), - ], + SizedBox(width: 20.w,), + GestureDetector( + onTap: () async { + final bool? isDemoMode = + await Storage.getBool(ifIsDemoModeOrNot); + if (isDemoMode == false) { + setState(() { + state.isDay.value = false; + final DateTime dateTime = + DateTime.fromMillisecondsSinceEpoch( + state.checkListDateTimestamp.value); + final String beginDate = + formatDate(dateTime, [mm]); + state.checkListDate.value = beginDate; + logic.loadDataByType(); + }); + } else { + // Get.toNamed(Routers.selectLockTypePage); + logic.showToast('演示模式'.tr); + } + }, + child: Container( + + // height: 100.h, + color: Colors.white, + child: Obx(() => Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text('月榜'.tr, + style: TextStyle( + color: !state.isDay.value + ? AppColors.mainColor + : Colors.black, + fontSize: 22.sp)), + SizedBox(height: 10.h), + Visibility( + visible: !state.isDay.value, + child: Container( + width: 20.w, + height: 2.h, + color: !state.isDay.value + ? AppColors.mainColor + : Colors.black)) + ], + )), + ), + ), + ], + ), ), GestureDetector( onTap: () async { diff --git a/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart b/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart index 305280cf..a3a058a8 100755 --- a/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart +++ b/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -19,8 +18,10 @@ class CheckingInSetWorkdaySet extends StatefulWidget { } class _CheckingInSetWorkdaySetState extends State { - final CheckingInSetWorkdaySetLogic logic = Get.put(CheckingInSetWorkdaySetLogic()); - final CheckingInSetWorkdaySetState state = Get.find().state; + final CheckingInSetWorkdaySetLogic logic = + Get.put(CheckingInSetWorkdaySetLogic()); + final CheckingInSetWorkdaySetState state = + Get.find().state; @override Widget build(BuildContext context) { @@ -33,22 +34,28 @@ class _CheckingInSetWorkdaySetState extends State { body: ListView( children: [ topBtnWidget(), - Obx(() => Visibility(visible: state.isCustom.value, child: bottomCustomSelectBtn())), - Obx(() => Visibility(visible: !state.isCustom.value, child: bottomOddOrEvenDaysOffSelectBtn())), - SizedBox(height: 50.h,), + Obx(() => Visibility( + visible: state.isCustom.value, child: bottomCustomSelectBtn())), + Obx(() => Visibility( + visible: !state.isCustom.value, + child: bottomOddOrEvenDaysOffSelectBtn())), + SizedBox( + height: 50.h, + ), Container( margin: EdgeInsets.only(left: 20.w, right: 20.w), - child: SubmitBtn(btnName: '确定'.tr, onClick: () { - if(state.pushType.value == '2'){ - logic.editCheckInSetInfoData(); - }else{ - Get.back(result: { - 'attendanceType':state.isCustom.value, - 'weekDays':state.weekDays.value, - }); - } - - }), + child: SubmitBtn( + btnName: '确定'.tr, + onClick: () { + if (state.pushType.value == '2') { + logic.editCheckInSetInfoData(); + } else { + Get.back(result: { + 'attendanceType': state.isCustom.value, + 'weekDays': state.weekDays.value, + }); + } + }), ), ], ), @@ -58,58 +65,64 @@ class _CheckingInSetWorkdaySetState extends State { Widget topBtnWidget() { return Container( width: 1.sw, - height: 100.h, + constraints: BoxConstraints(minHeight: 100.h), // color: Colors.red, padding: EdgeInsets.all(10.w), child: Obx(() => Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - GestureDetector( - onTap: (){ - setState(() { - state.isCustom.value = true; - }); - }, - child: Container( - width: (1.sw - 5.w * 2) / 2, - height: 100.h, - color: state.isCustom.value ? AppColors.mainColor : AppColors.btnDisableColor, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Center(child: Text('自定义'.tr, style: TextStyle(fontSize: 26.sp, color: Colors.white))), - ], + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + onTap: () { + setState(() { + state.isCustom.value = true; + }); + }, + child: Container( + width: (1.sw - 5.w * 2) / 2, + height: 100.h, + color: state.isCustom.value + ? AppColors.mainColor + : AppColors.btnDisableColor, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Center( + child: Text('自定义'.tr, + style: TextStyle( + fontSize: 26.sp, color: Colors.white))), + ], + ), + ), ), - ), - ), - // SizedBox(width: 10.w,), - GestureDetector( - onTap: (){ - setState(() { - state.isCustom.value = false; - }); - }, - child: Container( - width: (1.sw - 10 * 3) / 2, - height: 100.h, - color: state.isCustom.value ? AppColors.btnDisableColor : AppColors.mainColor, - padding: EdgeInsets.all(10.w), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: Center( - child: Text( - '单双休'.tr, - style: TextStyle(fontSize: 26.sp, color: Colors.white), - textAlign: TextAlign.center, - ))), - ], + // SizedBox(width: 10.w,), + GestureDetector( + onTap: () { + setState(() { + state.isCustom.value = false; + }); + }, + child: Container( + width: (1.sw - 10 * 3) / 2, + color: state.isCustom.value + ? AppColors.btnDisableColor + : AppColors.mainColor, + padding: EdgeInsets.all(10.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Center( + child: Text( + '单双休'.tr, + style: TextStyle(fontSize: 26.sp, color: Colors.white), + textAlign: TextAlign.center, + ))), + ], + ), + ), ), - ), - ), - ], - )), + ], + )), ); } @@ -129,36 +142,46 @@ class _CheckingInSetWorkdaySetState extends State { allHeight: 60.h, isHaveLine: true, isHaveRightWidget: true, - action: (){ + action: () { setState(() { state.isSingledayWeekend.value = 0; - state.weekDays.value = [1, 2 , 3, 4, 5, 6]; + state.weekDays.value = [1, 2, 3, 4, 5, 6]; }); }, rightWidget: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset( + state.isSingledayWeekend.value == 0 + ? 'images/icon_round_select.png' + : 'images/icon_round_unSelect.png', + width: 30.w, + height: 30.w, + ), ], - ) - )), + ))), Obx(() => CommonItem( leftTitel: '双休'.tr, rightTitle: '', allHeight: 60.h, isHaveLine: false, isHaveRightWidget: true, - action: (){ + action: () { setState(() { state.isSingledayWeekend.value = 1; - state.weekDays.value = [1, 2 , 3, 4, 5]; + state.weekDays.value = [1, 2, 3, 4, 5]; }); }, rightWidget: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset( + state.isSingledayWeekend.value == 1 + ? 'images/icon_round_select.png' + : 'images/icon_round_unSelect.png', + width: 30.w, + height: 30.w, + ), ], - ) - )), + ))), ], ), ); @@ -206,12 +229,12 @@ class _CheckingInSetWorkdaySetState extends State { allHeight: 60.h, isHaveLine: true, isHaveRightWidget: true, - action: (){ + action: () { setState(() { state.isSingledayWeekend.value = 2; - if(state.weekDays.value.contains(index)){ + if (state.weekDays.value.contains(index)) { state.weekDays.value.remove(index); - }else{ + } else { state.weekDays.value.add(index); } state.weekDays.value.sort(); @@ -219,13 +242,16 @@ class _CheckingInSetWorkdaySetState extends State { }, rightWidget: Row( children: [ - Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset( + state.weekDays.value.contains(index) + ? 'images/icon_round_select.png' + : 'images/icon_round_unSelect.png', + width: 30.w, + height: 30.w, + ), ], - ) - )); - } - ), + ))); + }), ); } - } diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index f9bf8c35..d5dbf200 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -1,6 +1,8 @@ import 'dart:async'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -275,6 +277,9 @@ class _LockDetailPageState extends State return Container( width: 0.9.sw, height: 0.6.sw, + constraints: BoxConstraints( + minHeight: 0.6.sw, + ), decoration: BoxDecoration( image: const DecorationImage( image: AssetImage('images/xhj_main_bg.jpg'), @@ -293,7 +298,6 @@ class _LockDetailPageState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - const Spacer(), GestureDetector( onTap: () { ShowTipView().showSureAlertDialog( @@ -322,9 +326,6 @@ class _LockDetailPageState extends State SizedBox(width: 20.w), ], ), - SizedBox( - height: 15.h, - ), Visibility( visible: state .keyInfos.value.lockFeature!.isSupportBackupBattery == @@ -388,7 +389,6 @@ class _LockDetailPageState extends State spreadRadius: 0, ), ]), - margin: EdgeInsets.only(top: 0.h), child: Stack( alignment: AlignmentDirectional.center, children: [ @@ -428,31 +428,17 @@ class _LockDetailPageState extends State ), ), ), - const Spacer(), - Padding( - padding: EdgeInsets.only(left: 15.w, right: 00.w, bottom: 15.h), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - '点击开锁,长按闭锁'.tr, - style: TextStyle( - color: AppColors.darkGrayTextColor, - fontSize: 20.sp, - ), - ), - SizedBox( - height: 16.h, - ), - adminInfoView(center: false, max: false), - ], - ), - ], + Expanded( + child: Text( + '点击开锁,长按闭锁'.tr, + textAlign: TextAlign.center, + style: TextStyle( + color: AppColors.darkGrayTextColor, + fontSize: 20.sp, + ), ), - ) + ), + adminInfoView(center: false, max: false), ], ), ); @@ -765,86 +751,104 @@ class _LockDetailPageState extends State return Row( mainAxisAlignment: center ? MainAxisAlignment.center : MainAxisAlignment.start, - mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, children: [ - Image.asset( - 'images/icon_electronicKey_admin.png', - width: 24.w, - height: 20.w, - color: AppColors.blackColor, //应根据状态显示(当前角色为超级管理员 应显示蓝色图标) - ), - SizedBox(width: 6.w), - Text( - state.keyInfos.value.isLockOwner == 1 - ? '超级管理员'.tr - : (state.keyInfos.value.keyRight == 1 ? '授权管理员'.tr : '普通用户'.tr), - style: TextStyle(fontSize: 20.sp, color: AppColors.darkGrayTextColor), - ), - if (add) SizedBox(width: 20.w) else SizedBox(width: 40.w), - FlavorsImg( - child: Image.asset( - state.keyInfos.value.hasGateway == 1 - ? 'images/main/icon_main_remoteUnlocking.png' - : 'images/main/icon_main_remoteUnlocking_grey.png', - width: 24.w, - height: 20.w, - ), - ), - SizedBox(width: 6.w), - Text( - '网关设备'.tr, - style: TextStyle( - fontSize: 20.sp, - color: state.keyInfos.value.hasGateway == 1 - ? AppColors.mainColor - : AppColors.btnDisableColor), - ), - if (add) SizedBox(width: 20.w) else SizedBox(width: 20.w), - FlavorsImg( - child: Image.asset('images/main/icon_lockDetail_needNetwork.png', + Row( + mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, + children: [ + Image.asset( + 'images/icon_electronicKey_admin.png', width: 24.w, height: 20.w, - color: state.isOpenLockNeedOnline.value == 1 - ? AppColors.mainColor - : AppColors.btnDisableColor), + color: AppColors.blackColor, //应根据状态显示(当前角色为超级管理员 应显示蓝色图标) + ), + SizedBox(width: 6.w), + Text( + state.keyInfos.value.isLockOwner == 1 + ? '超级管理员'.tr + : (state.keyInfos.value.keyRight == 1 + ? '授权管理员'.tr + : '普通用户'.tr), + style: TextStyle( + fontSize: 20.sp, color: AppColors.darkGrayTextColor), + ), + if (add) SizedBox(width: 20.w) else SizedBox(width: 40.w), + ], ), - SizedBox(width: 6.w), - Text( - '手机需联网'.tr, - style: TextStyle( - fontSize: 20.sp, - color: state.isOpenLockNeedOnline.value == 1 - ? AppColors.mainColor - : AppColors.btnDisableColor), - ), - if (add) ...[ - const Spacer(), - GestureDetector( - onTap: () { - Get.toNamed(Routers.selectLockTypePage); - }, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - FlavorsImg( - child: Image.asset( - 'images/mine/icon_mine_main_addLock.png', - width: 24.w, - height: 20.w, - ), - ), - Text( - '添加设备'.tr, - style: TextStyle( - fontSize: 20.sp, color: AppColors.darkGrayTextColor), - ) - ], + Row( + mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, + children: [ + FlavorsImg( + child: Image.asset( + state.keyInfos.value.hasGateway == 1 + ? 'images/main/icon_main_remoteUnlocking.png' + : 'images/main/icon_main_remoteUnlocking_grey.png', + width: 24.w, + height: 20.w, ), ), - ), - ] + SizedBox(width: 6.w), + Text( + '网关设备'.tr, + style: TextStyle( + fontSize: 20.sp, + color: state.keyInfos.value.hasGateway == 1 + ? AppColors.mainColor + : AppColors.btnDisableColor), + ), + if (add) SizedBox(width: 20.w) else SizedBox(width: 20.w), + ], + ), + Row( + mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, + children: [ + FlavorsImg( + child: Image.asset('images/main/icon_lockDetail_needNetwork.png', + width: 24.w, + height: 20.w, + color: state.isOpenLockNeedOnline.value == 1 + ? AppColors.mainColor + : AppColors.btnDisableColor), + ), + SizedBox(width: 6.w), + Text( + '手机需联网'.tr, + style: TextStyle( + fontSize: 20.sp, + color: state.isOpenLockNeedOnline.value == 1 + ? AppColors.mainColor + : AppColors.btnDisableColor), + ), + if (add) ...[ + const Spacer(), + GestureDetector( + onTap: () { + Get.toNamed(Routers.selectLockTypePage); + }, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + FlavorsImg( + child: Image.asset( + 'images/mine/icon_mine_main_addLock.png', + width: 24.w, + height: 20.w, + ), + ), + Text( + '添加设备'.tr, + style: TextStyle( + fontSize: 20.sp, + color: AppColors.darkGrayTextColor), + ) + ], + ), + ), + ), + ], + ], + ) ], ); } diff --git a/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart b/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart index 9cee8c7b..7a8ebaef 100755 --- a/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart +++ b/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -32,7 +31,7 @@ class _FaceUnlockPageState extends State { barTitle: '面容开锁设置'.tr, haveBack: true, backgroundColor: AppColors.mainColor), - body: Obx(() => Column( + body: Obx(() => ListView( children: [ Container( margin: EdgeInsets.only(left: 20.w), @@ -58,11 +57,15 @@ class _FaceUnlockPageState extends State { '防误开'.tr, state.antiMisoperation.value == 0 ? '防误开已关闭,关门后仍可使用面容开锁'.tr - :'防误开已打开,开锁后'.tr + state.antiMisoperation.value.toString() + '秒内不可使用面容开锁'.tr, + : '防误开已打开,开锁后'.tr + + state.antiMisoperation.value.toString() + + '秒内不可使用面容开锁'.tr, // state.antiMisoperation.value == 0 ? '关闭' : '${state.antiMisoperation.value}' + '秒'.tr, state.faceOn.value, () { - Pickers.showSinglePicker(Get.context!, data: state.antiMisoperationStrList.value, onConfirm: (var data, int position) { + Pickers.showSinglePicker(Get.context!, + data: state.antiMisoperationStrList.value, + onConfirm: (var data, int position) { AppLog.log('data = $data, position = $position'); state.antiMisoperation.value = position; state.setType.value = 2; @@ -79,7 +82,8 @@ class _FaceUnlockPageState extends State { ))); } - Widget _buildSubTitleItem(String leftStr, String subTitle, String rightStr, bool isAble, Function()? action) { + Widget _buildSubTitleItem(String leftStr, String subTitle, String rightStr, + bool isAble, Function()? action) { return GestureDetector( onTap: isAble ? action : null, child: Container( @@ -99,7 +103,11 @@ class _FaceUnlockPageState extends State { alignment: Alignment.centerLeft, child: Text( leftStr, - style: TextStyle(fontSize: 24.sp, color: isAble ? Colors.black : AppColors.placeholderTextColor), + style: TextStyle( + fontSize: 24.sp, + color: isAble + ? Colors.black + : AppColors.placeholderTextColor), ), ), SizedBox( @@ -109,8 +117,6 @@ class _FaceUnlockPageState extends State { alignment: Alignment.centerLeft, child: Text( subTitle, - maxLines: 2, - overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 20.sp, color: AppColors.btnDisableColor), ), @@ -123,7 +129,9 @@ class _FaceUnlockPageState extends State { Text( rightStr, style: TextStyle( - fontSize: 22.sp, color: isAble ? Colors.black : AppColors.placeholderTextColor), + fontSize: 22.sp, + color: + isAble ? Colors.black : AppColors.placeholderTextColor), ), SizedBox( width: 10.w, @@ -159,7 +167,8 @@ class _FaceUnlockPageState extends State { activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, - value: state.faceOn.value, // getIndex == 1 ? state.faceOn.value : state.autoBright.value, + value: state.faceOn.value, + // getIndex == 1 ? state.faceOn.value : state.autoBright.value, onChanged: (bool value) { if (getIndex == 1) { //设置面容开锁开关 @@ -181,8 +190,7 @@ class _FaceUnlockPageState extends State { topTitle: '', items: bottomItemList, chooseCallback: (int value) { - state.senseDistance.value = - state.senseDistanceList.value[value]; + state.senseDistance.value = state.senseDistanceList.value[value]; state.setType.value = 1; logic.sendFaceUnlock(); }, diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart index 37b07f57..ec901d63 100755 --- a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart +++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart @@ -532,7 +532,7 @@ class LockSetLogic extends BaseGetXController { /// 以下为删除逻辑 void deleyLockLogicOfRoles() { if (state.lockBasicInfo.value.isLockOwner == 1) { - // 超级管理员必须通过连接蓝牙删除 + // 超级管理员必须通过连接蓝牙删除q state.showTipView.showIosTipWithContentDialog('删除锁后,所有信息都会一起删除,确定删除锁吗?'.tr, () { // 删除锁 state.showTipView.resetGetController(); diff --git a/lib/mine/message/messageList/messageList_logic.dart b/lib/mine/message/messageList/messageList_logic.dart index 8541d183..6c119cee 100755 --- a/lib/mine/message/messageList/messageList_logic.dart +++ b/lib/mine/message/messageList/messageList_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -8,14 +7,14 @@ import 'messageList_entity.dart'; import 'messageList_state.dart'; typedef BlockDeletSuccssCallback = void Function(); + class MessageListLogic extends BaseGetXController { final MessageListState state = MessageListState(); //请求消息列表 Future messageListDataRequest() async { - final MessageListEntity entity = await ApiRepository.to.messageListLoadData( - pageNo:pageNo.toString(), - pageSize:pageSize); + final MessageListEntity entity = await ApiRepository.to + .messageListLoadData(pageNo: pageNo.toString(), pageSize: pageSize); if (entity.errorCode!.codeIsSuccessful) { if (pageNo == 1) { state.itemDataList.value = entity.data!.list!; @@ -31,8 +30,10 @@ class MessageListLogic extends BaseGetXController { } // 删除消息 - Future deletMessageDataRequest(String messageId, BlockDeletSuccssCallback blockDeletSuccssCallback) async { - final MessageListEntity entity = await ApiRepository.to.deletMessageLoadData(messageId:messageId); + Future deletMessageDataRequest(String messageId, + BlockDeletSuccssCallback blockDeletSuccssCallback) async { + final MessageListEntity entity = + await ApiRepository.to.deletMessageLoadData(messageId: messageId); if (entity.errorCode!.codeIsSuccessful) { blockDeletSuccssCallback(); } @@ -40,7 +41,8 @@ class MessageListLogic extends BaseGetXController { // 清空消息 Future deletAllMessageDataRequest() async { - final MessageListEntity entity = await ApiRepository.to.deletAllMessageLoadData(); + final MessageListEntity entity = + await ApiRepository.to.deletAllMessageLoadData(); if (entity.errorCode!.codeIsSuccessful) { pageNo = 1; messageListDataRequest(); @@ -49,9 +51,11 @@ class MessageListLogic extends BaseGetXController { // 刷新消息列表 StreamSubscription? _readMessageRefreshUIEvent; + void _readMessageRefreshUIAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _readMessageRefreshUIEvent = eventBus.on().listen((event) { + _readMessageRefreshUIEvent = + eventBus.on().listen((event) { pageNo = 1; messageListDataRequest(); }); @@ -63,6 +67,14 @@ class MessageListLogic extends BaseGetXController { // messageListDataRequest(); _readMessageRefreshUIAction(); + + // 收到切换语言消息,重新拉取一下列表 + eventBus + .on() + .listen((ChangeLanguageBlockLastLanguageEvent event) { + pageNo = 1; + messageListDataRequest(); + }); } @override @@ -70,5 +82,4 @@ class MessageListLogic extends BaseGetXController { super.onClose(); _readMessageRefreshUIEvent?.cancel(); } - -} \ No newline at end of file +} diff --git a/lib/mine/message/messageList/messageList_page.dart b/lib/mine/message/messageList/messageList_page.dart index cbaed343..dd0cb4ed 100755 --- a/lib/mine/message/messageList/messageList_page.dart +++ b/lib/mine/message/messageList/messageList_page.dart @@ -1,9 +1,9 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; import 'package:star_lock/mine/message/messageList/messageList_state.dart'; +import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/noData.dart'; import '../../../appRouters.dart'; @@ -50,24 +50,26 @@ class _MessageListPageState extends State ? TitleAppBar( barTitle: '消息'.tr, haveBack: true, - actionsList: [ - TextButton( - child: Text( - '清空'.tr, - style: TextStyle(color: Colors.white, fontSize: 24.sp), - ), - onPressed: () async { - final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); - if (isDemoMode == false) { - ShowTipView().showIosTipWithContentDialog('是否清空?'.tr, () async { - logic.deletAllMessageDataRequest(); - }); - } else { - logic.showToast('演示模式'.tr); - } - }, - ), - ], + actionsList: [ + TextButton( + child: Text( + '清空'.tr, + style: TextStyle(color: Colors.white, fontSize: 24.sp), + ), + onPressed: () async { + final bool? isDemoMode = + await Storage.getBool(ifIsDemoModeOrNot); + if (isDemoMode == false) { + ShowTipView().showIosTipWithContentDialog('是否清空?'.tr, + () async { + logic.deletAllMessageDataRequest(); + }); + } else { + logic.showToast('演示模式'.tr); + } + }, + ), + ], backgroundColor: AppColors.mainColor) : null, body: EasyRefreshTool(onRefresh: () { @@ -106,9 +108,10 @@ class _MessageListPageState extends State ], ), child: _messageListItem(messageItemEntity, () { - Get.toNamed(Routers.messageDetailPage, arguments: { - 'messageItemEntity': messageItemEntity - }); + Get.toNamed(Routers.messageDetailPage, + arguments: { + 'messageItemEntity': messageItemEntity + }); }), ); }), @@ -137,15 +140,21 @@ class _MessageListPageState extends State children: [ Row( children: [ - if (messageItemEntity.readAt! == 0) Container( - width: 10.w, - height: 10.w, - decoration: BoxDecoration( - color: Colors.red, - borderRadius: BorderRadius.circular(5.w), - ), - ) else Container(), - if (messageItemEntity.readAt! == 0) SizedBox(width: 5.w) else Container(), + if (messageItemEntity.readAt! == 0) + Container( + width: 10.w, + height: 10.w, + decoration: BoxDecoration( + color: Colors.red, + borderRadius: BorderRadius.circular(5.w), + ), + ) + else + Container(), + if (messageItemEntity.readAt! == 0) + SizedBox(width: 5.w) + else + Container(), Flexible( child: Text( messageItemEntity.data!, diff --git a/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart b/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart index cbfeed66..0c1ee11c 100755 --- a/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart +++ b/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart @@ -1,4 +1,3 @@ - import 'dart:ui'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_settings.dart'; @@ -16,16 +15,18 @@ class MineMultiLanguageLogic extends GetxController { // AppLog.log('lanTypeTitle: $lanTypeTitle'); final String lang = l.toLanguageTag(); - final PasswordKeyListEntity entity = await ApiRepository.to.updateUserLangInfo(lang: lang); + final PasswordKeyListEntity entity = + await ApiRepository.to.updateUserLangInfo(lang: lang); if (entity.errorCode!.codeIsSuccessful) { await changeLanguage(l); eventBus.fire(ChangeLanguageBlockLastLanguageEvent()); + print('发送语言变化事件'); } } Future changeLanguage(Locale l) async { - if(l == Get.locale)return; + if (l == Get.locale) return; await Get.updateLocale(l); state.resetLan(); } -} \ No newline at end of file +} diff --git a/lib/mine/mineSet/mineSet/mineSet_logic.dart b/lib/mine/mineSet/mineSet/mineSet_logic.dart index 29eacf09..fd0dc965 100755 --- a/lib/mine/mineSet/mineSet/mineSet_logic.dart +++ b/lib/mine/mineSet/mineSet/mineSet_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter/material.dart'; @@ -25,6 +24,7 @@ import '../../../translations/app_dept.dart'; class MineSetLogic extends BaseGetXController { final MineSetState state = MineSetState(); + //用户信息 Future userSettingsInfoRequest() async { final UserSettingInfoEntity entity = @@ -108,7 +108,8 @@ class MineSetLogic extends BaseGetXController { getPushDeviceID = value; } }); - final LoginEntity entity = await ApiRepository.to.userLogout(deviceld: getPushDeviceID); + final LoginEntity entity = + await ApiRepository.to.userLogout(deviceld: getPushDeviceID); if (entity.errorCode!.codeIsSuccessful) { UdpHelp().closeUDP(); logOut(); @@ -148,10 +149,14 @@ class MineSetLogic extends BaseGetXController { String _getCurrentLanguage() { String? languageCode = StoreService.to.getLanguageCode(); - if(languageCode!.isEmpty){ + if (languageCode!.isEmpty) { languageCode = Get.deviceLocale!.languageCode; } - final String currentLanguage = ExtensionLanguageType.fromLocale(appDept.deptSupportedLocales.where((Locale element) => element.languageCode == languageCode).first).lanTitle; + final String currentLanguage = ExtensionLanguageType.fromLocale(appDept + .deptSupportedLocales + .where((Locale element) => element.languageCode == languageCode) + .first) + .lanTitle; return currentLanguage; } diff --git a/lib/mine/mineSet/mineSet/mineSet_page.dart b/lib/mine/mineSet/mineSet/mineSet_page.dart index 83b51a57..d6acfed4 100755 --- a/lib/mine/mineSet/mineSet/mineSet_page.dart +++ b/lib/mine/mineSet/mineSet/mineSet_page.dart @@ -1,3 +1,4 @@ + import 'dart:io'; import 'package:flutter/cupertino.dart'; @@ -10,6 +11,7 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_logic.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart'; +import 'package:star_lock/tools/langue/langue_tool.dart'; import 'package:star_lock/tools/wechat/customer_tool.dart'; import '../../../appRouters.dart'; import '../../../app_settings/app_colors.dart'; @@ -149,6 +151,8 @@ class _MineSetPageState extends State } Widget getListDataView() { + // 检测系统语言是否为中文 + bool isChinese = LanguageTool.instance.isChinese; return Column( children: [ /* 2024-01-12 会议确定去掉“提示音、触摸开锁” by DaisyWu @@ -192,17 +196,20 @@ class _MineSetPageState extends State height: 50.h, child: Obx(_isPushNotificationSwitch))), // if (F.appFlavor == Flavor.sky) - CommonItem( + if (isChinese) + CommonItem( leftTitel: '微信公众号推送'.tr, rightTitle: '', isHaveLine: true, isHaveRightWidget: true, rightWidget: SizedBox( - width: 60.w, - height: 50.h, - child: Obx(_isWechatPublicAccountPushSwitch))), - // else - // Container(), + width: 60.w, + height: 50.h, + child: Obx(_isWechatPublicAccountPushSwitch), + ), + ) + else + Container(), SizedBox(height: 10.h), CommonItem( leftTitel: '锁用户管理'.tr, diff --git a/lib/tools/langue/langue_tool.dart b/lib/tools/langue/langue_tool.dart new file mode 100644 index 00000000..36715085 --- /dev/null +++ b/lib/tools/langue/langue_tool.dart @@ -0,0 +1,16 @@ +import 'package:get/get.dart'; + +class LanguageTool { + LanguageTool._(); + + static LanguageTool? _instance; + + static LanguageTool get instance => _instance ??= LanguageTool._(); + + String get currentLanguage => Get.locale?.languageCode ?? 'zh'; + + bool get isChinese => currentLanguage == 'zh'; + + bool get isArabic => currentLanguage == 'ar'; + bool get isHebrew => currentLanguage == 'he'; +} diff --git a/lib/tools/titleAppBar.dart b/lib/tools/titleAppBar.dart index bffe2184..adf5c792 100755 --- a/lib/tools/titleAppBar.dart +++ b/lib/tools/titleAppBar.dart @@ -3,6 +3,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/flavors.dart'; +import 'package:star_lock/tools/langue/langue_tool.dart'; class TitleAppBar extends AppBar { @override @@ -40,13 +41,17 @@ class TitleAppBar extends AppBar { class _TitleAppBarState extends State { @override Widget build(BuildContext context) { + bool isRTL = + LanguageTool.instance.isArabic || LanguageTool.instance.isHebrew; + return AppBar( elevation: 0, leading: widget.haveOtherLeftWidget! ? widget.leftWidget : (widget.haveBack ?? false ? IconButton( - icon: Icon(Icons.arrow_back_ios, + icon: Icon( + isRTL ? Icons.arrow_forward_ios : Icons.arrow_back_ios, color: widget.iconColor ?? Colors.white), onPressed: () { if (widget.backAction != null) {