Merge branch 'develop_liyi' into 'canary_release'
发布测试版本 See merge request StarlockTeam/app-starlock!6
This commit is contained in:
commit
5ebfbe6e55
@ -1150,5 +1150,6 @@
|
|||||||
",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权",
|
",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权",
|
||||||
"暂无最新记录": "暂无最新记录",
|
"暂无最新记录": "暂无最新记录",
|
||||||
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
||||||
|
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
|
||||||
"网关添加成功": "网关添加成功"
|
"网关添加成功": "网关添加成功"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -504,7 +504,7 @@
|
|||||||
"您的钥匙已过期": "Срок действия вашего ключа истек",
|
"您的钥匙已过期": "Срок действия вашего ключа истек",
|
||||||
"常开模式开启": "Замок находится в режиме прохода",
|
"常开模式开启": "Замок находится в режиме прохода",
|
||||||
"超级管理员": "Супер админ",
|
"超级管理员": "Супер админ",
|
||||||
"授权管理员": "Авторизованный администратор",
|
"授权管理员": "Автор. администратор",
|
||||||
"普通用户": "Обычный пользователь",
|
"普通用户": "Обычный пользователь",
|
||||||
"余": "Баланс",
|
"余": "Баланс",
|
||||||
"天": "День",
|
"天": "День",
|
||||||
@ -1147,5 +1147,6 @@
|
|||||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home",
|
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home",
|
||||||
"3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу",
|
"3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу",
|
||||||
"暂无最新记录": "В настоящее время последние данные отсутствуют",
|
"暂无最新记录": "В настоящее время последние данные отсутствуют",
|
||||||
|
"请扫描可视门铃码二维码": "Сканируйте код вызова",
|
||||||
"请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения"
|
"请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения"
|
||||||
}
|
}
|
||||||
@ -1150,5 +1150,6 @@
|
|||||||
",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权",
|
",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权",
|
||||||
"暂无最新记录": "暂无最新记录",
|
"暂无最新记录": "暂无最新记录",
|
||||||
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
||||||
|
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
|
||||||
"网关添加成功": "网关添加成功"
|
"网关添加成功": "网关添加成功"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,9 +48,18 @@ class _CatEyeCustomModePageState extends State<CatEyeCustomModePage> {
|
|||||||
isHaveLine: false,
|
isHaveLine: false,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: Text(state.selectVideoSlot.value,
|
rightWidget: Container(
|
||||||
|
constraints: BoxConstraints(maxWidth: 150.w), // 限制最大宽度
|
||||||
|
child: Text(
|
||||||
|
state.selectVideoSlot.value,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 22.sp, color: AppColors.darkGrayTextColor)),
|
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||||
|
textAlign: TextAlign.right, // 右对齐
|
||||||
|
softWrap: true, // 允许换行
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis, // 文本溢出时显示
|
||||||
|
),
|
||||||
|
),
|
||||||
action: () {
|
action: () {
|
||||||
Navigator.pushNamed(context, Routers.videoSlotPage,
|
Navigator.pushNamed(context, Routers.videoSlotPage,
|
||||||
arguments: {
|
arguments: {
|
||||||
|
|||||||
@ -37,48 +37,50 @@ class _CatEyeWorkModePageState extends State<CatEyeWorkModePage> {
|
|||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
},
|
},
|
||||||
backgroundColor: AppColors.mainColor),
|
backgroundColor: AppColors.mainColor),
|
||||||
body: Obx(
|
body: SingleChildScrollView(
|
||||||
() => Column(
|
child: Obx(
|
||||||
children: <Widget>[
|
() => Column(
|
||||||
SizedBox(
|
children: <Widget>[
|
||||||
height: 30.h,
|
SizedBox(
|
||||||
),
|
height: 30.h,
|
||||||
_buildTipsView(
|
),
|
||||||
'省电模式'.tr + ':\n',
|
_buildTipsView(
|
||||||
'适合门口较为安全的环境。'.tr +
|
'省电模式'.tr + ':\n',
|
||||||
'\n' +
|
'适合门口较为安全的环境。'.tr +
|
||||||
'仅发生特定事件才录像,并可查看实时画面。'.tr +
|
'\n' +
|
||||||
'\n' +
|
'仅发生特定事件才录像,并可查看实时画面。'.tr +
|
||||||
'一般情况下,满电可使用7-8个月'.tr,
|
'\n' +
|
||||||
0),
|
'一般情况下,满电可使用7-8个月'.tr,
|
||||||
SizedBox(
|
0),
|
||||||
height: 30.h,
|
SizedBox(
|
||||||
),
|
height: 30.h,
|
||||||
_buildTipsView(
|
),
|
||||||
'逗留抓拍模式'.tr + ':\n',
|
_buildTipsView(
|
||||||
'有人逗留或发生特定事件才录像,可随时查看'.tr +
|
'逗留抓拍模式'.tr + ':\n',
|
||||||
'\n' +
|
'有人逗留或发生特定事件才录像,可随时查看'.tr +
|
||||||
'实时画面。'.tr +
|
'\n' +
|
||||||
'\n' +
|
'实时画面。'.tr +
|
||||||
'一般情况下,满电可使用5~6个月。'.tr,
|
'\n' +
|
||||||
1),
|
'一般情况下,满电可使用5~6个月。'.tr,
|
||||||
SizedBox(
|
1),
|
||||||
height: 30.h,
|
SizedBox(
|
||||||
),
|
height: 30.h,
|
||||||
_buildTipsView(
|
),
|
||||||
'实时监控模式'.tr + ':\n',
|
_buildTipsView(
|
||||||
'适合门口人员复杂、较不安全的环境。'.tr +
|
'实时监控模式'.tr + ':\n',
|
||||||
'\n' +
|
'适合门口人员复杂、较不安全的环境。'.tr +
|
||||||
'有人出现就录像,可随时查看实时画面。'.tr +
|
'\n' +
|
||||||
'\n' +
|
'有人出现就录像,可随时查看实时画面。'.tr +
|
||||||
'一般情况下,满电可使用2~4个月。'.tr,
|
'\n' +
|
||||||
2),
|
'一般情况下,满电可使用2~4个月。'.tr,
|
||||||
SizedBox(
|
2),
|
||||||
height: 30.h,
|
SizedBox(
|
||||||
),
|
height: 30.h,
|
||||||
_buildTipsView('自定义模式'.tr + ':\n',
|
),
|
||||||
'根据您家门口实际情况设置录像和实时画面功能。'.tr + '\n' + '可使用时长由具体设置决定。'.tr, 3)
|
_buildTipsView('自定义模式'.tr + ':\n',
|
||||||
],
|
'根据您家门口实际情况设置录像和实时画面功能。'.tr + '\n' + '可使用时长由具体设置决定。'.tr, 3)
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -121,13 +123,14 @@ class _CatEyeWorkModePageState extends State<CatEyeWorkModePage> {
|
|||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 90.w,
|
padding: EdgeInsets.all(8.w),
|
||||||
height: 40.h,
|
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
borderRadius: BorderRadius.circular(15.0),
|
borderRadius: BorderRadius.circular(15.0),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
color: AppColors.placeholderTextColor, width: 1.w),
|
color: AppColors.placeholderTextColor,
|
||||||
|
width: 1.w,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class _LiveVideoPageState extends State<LiveVideoPage> {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: '实时画面',
|
barTitle: '实时画面'.tr,
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
backAction: () {
|
backAction: () {
|
||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
|
|||||||
@ -155,10 +155,16 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 60.h,
|
height: 60.h,
|
||||||
),
|
),
|
||||||
Text(
|
Padding(
|
||||||
'此模块功能需要锁联网后设置方可生效'.tr,
|
padding: EdgeInsets.symmetric(horizontal: 30.w),
|
||||||
style: TextStyle(fontSize: 20.sp),
|
child: Text(
|
||||||
)
|
'此模块功能需要锁联网后设置方可生效'.tr,
|
||||||
|
style: TextStyle(fontSize: 20.sp),
|
||||||
|
textAlign: TextAlign.center, // 文本居中对齐
|
||||||
|
softWrap: true, // 允许文本换行
|
||||||
|
overflow: TextOverflow.visible, // 文本溢出时显示
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,8 +109,10 @@ class _AuthorizedAdministratorListPageState
|
|||||||
64.h),
|
64.h),
|
||||||
Align(
|
Align(
|
||||||
alignment: const Alignment(0.0, 0.2),
|
alignment: const Alignment(0.0, 0.2),
|
||||||
child: SizedBox(
|
child: Container(
|
||||||
width: 360.w,
|
constraints: BoxConstraints(
|
||||||
|
maxWidth: 0.9.sw,
|
||||||
|
),
|
||||||
child: SubmitBtn(
|
child: SubmitBtn(
|
||||||
btnName: '添加授权管理员'.tr,
|
btnName: '添加授权管理员'.tr,
|
||||||
onClick: () {
|
onClick: () {
|
||||||
|
|||||||
@ -17,9 +17,13 @@ import 'package:star_lock/talk/starChart/proto/talk_expect.pb.dart';
|
|||||||
import 'package:star_lock/talk/starChart/proto/talk_request.pb.dart';
|
import 'package:star_lock/talk/starChart/proto/talk_request.pb.dart';
|
||||||
import 'package:star_lock/tools/push/xs_jPhush.dart';
|
import 'package:star_lock/tools/push/xs_jPhush.dart';
|
||||||
import 'package:star_lock/tools/storage.dart';
|
import 'package:star_lock/tools/storage.dart';
|
||||||
|
import 'package:star_lock/translations/current_locale_tool.dart';
|
||||||
|
|
||||||
class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
||||||
implements ScpMessageHandler {
|
implements ScpMessageHandler {
|
||||||
|
RxString currentLanguage =
|
||||||
|
CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void handleReq(ScpMessage scpMessage) async {
|
void handleReq(ScpMessage scpMessage) async {
|
||||||
// 回复成功
|
// 回复成功
|
||||||
@ -107,7 +111,9 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
XSJPushProvider().showCustomNotification(message);
|
if (currentLanguage.value == 'zh_CN') {
|
||||||
|
XSJPushProvider().showCustomNotification(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
const AndroidNotificationDetails androidPlatformChannelSpecifics =
|
const AndroidNotificationDetails androidPlatformChannelSpecifics =
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class CommonItem extends StatelessWidget {
|
|||||||
this.rightWidget,
|
this.rightWidget,
|
||||||
this.isTipsImg,
|
this.isTipsImg,
|
||||||
this.action,
|
this.action,
|
||||||
|
this.leftTitleMaxWidth, // 新增属性
|
||||||
this.tipsImgAction})
|
this.tipsImgAction})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
String? leftTitel;
|
String? leftTitel;
|
||||||
@ -34,6 +35,7 @@ class CommonItem extends StatelessWidget {
|
|||||||
bool? setHeight;
|
bool? setHeight;
|
||||||
bool? isTipsImg;
|
bool? isTipsImg;
|
||||||
bool? isPadding;
|
bool? isPadding;
|
||||||
|
final double? leftTitleMaxWidth; // 新增属性声明
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -57,7 +59,17 @@ class CommonItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Text(leftTitel!, style: TextStyle(fontSize: 22.sp)),
|
ConstrainedBox(
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
maxWidth: leftTitleMaxWidth ?? 0.6.sw, // 默认最大宽度为屏幕宽度的40%
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
leftTitel!,
|
||||||
|
style: TextStyle(fontSize: 22.sp),
|
||||||
|
overflow: TextOverflow.ellipsis, // 超出部分显示省略号
|
||||||
|
maxLines: 3, // 最多显示2行
|
||||||
|
),
|
||||||
|
),
|
||||||
SizedBox(width: 6.w),
|
SizedBox(width: 6.w),
|
||||||
if (isTipsImg == true)
|
if (isTipsImg == true)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
|
||||||
@ -9,9 +8,9 @@ import '../app_settings/app_colors.dart';
|
|||||||
* */
|
* */
|
||||||
|
|
||||||
class SubmitBtn extends StatelessWidget {
|
class SubmitBtn extends StatelessWidget {
|
||||||
|
|
||||||
SubmitBtn({
|
SubmitBtn({
|
||||||
required this.btnName, Key? key,
|
required this.btnName,
|
||||||
|
Key? key,
|
||||||
this.borderRadius,
|
this.borderRadius,
|
||||||
this.color,
|
this.color,
|
||||||
this.padding,
|
this.padding,
|
||||||
@ -49,7 +48,9 @@ class SubmitBtn extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
width: ScreenUtil().screenWidth - 40.w,
|
width: ScreenUtil().screenWidth - 40.w,
|
||||||
height: 60.h,
|
constraints: BoxConstraints(
|
||||||
|
minHeight: 60.h, // 设置最小高度
|
||||||
|
),
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: isDisabled == false
|
backgroundColor: isDisabled == false
|
||||||
@ -63,7 +64,14 @@ class SubmitBtn extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
btnName!,
|
btnName!,
|
||||||
style: TextStyle(color: Colors.white, fontSize: 24.sp),
|
textAlign: TextAlign.center, // 文本居中对齐
|
||||||
|
softWrap: true, // 允许换行
|
||||||
|
overflow: TextOverflow.visible, // 文本溢出时显示
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 24.sp,
|
||||||
|
height: 1.2, // 行高
|
||||||
|
),
|
||||||
)),
|
)),
|
||||||
);
|
);
|
||||||
/*
|
/*
|
||||||
@ -111,9 +119,9 @@ class SubmitBtn extends StatelessWidget {
|
|||||||
* */
|
* */
|
||||||
|
|
||||||
class AddBottomWhiteBtn extends StatelessWidget {
|
class AddBottomWhiteBtn extends StatelessWidget {
|
||||||
|
|
||||||
AddBottomWhiteBtn({
|
AddBottomWhiteBtn({
|
||||||
required this.btnName, Key? key,
|
required this.btnName,
|
||||||
|
Key? key,
|
||||||
this.onClick,
|
this.onClick,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
String? btnName;
|
String? btnName;
|
||||||
@ -164,9 +172,9 @@ class AddBottomWhiteBtn extends StatelessWidget {
|
|||||||
* */
|
* */
|
||||||
|
|
||||||
class OutLineBtn extends StatelessWidget {
|
class OutLineBtn extends StatelessWidget {
|
||||||
|
|
||||||
OutLineBtn({
|
OutLineBtn({
|
||||||
required this.btnName, Key? key,
|
required this.btnName,
|
||||||
|
Key? key,
|
||||||
this.onClick,
|
this.onClick,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
String? btnName;
|
String? btnName;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user