Merge remote-tracking branch 'origin/develop' into develop_liyi

This commit is contained in:
liyi 2024-12-24 14:22:25 +08:00
commit 685591e652
61 changed files with 424 additions and 146 deletions

View File

@ -91,6 +91,8 @@ generate_git_tag:
stage: generate_tag_or_version
extends: .generate_tag_rule
before_script:
- bash pre_build.sh xhj
- bash pre_build.sh sky
- project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///')
- echo "project_url:$project_url"
- git remote set-url origin http://gitlab-ci-token:${GITLAB_ACCESS_TOKEN}@$project_url.git

View File

@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
04BFE7152D14105500A48EC9 /* InfoPlist_sky.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 04BFE7142D14105500A48EC9 /* InfoPlist_sky.xcstrings */; };
04C1FC572D13F1A2000C959E /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 04C1FC562D13F1A2000C959E /* InfoPlist.xcstrings */; };
04D0CC262D06CE570042EF10 /* launchImage_xhj.png in Resources */ = {isa = PBXBuildFile; fileRef = 82B657662C919BDF0079121C /* launchImage_xhj.png */; };
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
@ -99,6 +100,7 @@
/* Begin PBXFileReference section */
0420903B2C0EEAA50073E654 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; };
04BFC4482BCFE05100688FCA /* RunnerRelease-xhj.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "RunnerRelease-xhj.entitlements"; sourceTree = "<group>"; };
04BFE7142D14105500A48EC9 /* InfoPlist_sky.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = InfoPlist_sky.xcstrings; sourceTree = "<group>"; };
04C1FC562D13F1A2000C959E /* InfoPlist.xcstrings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = "<group>"; };
0BEB3ADCCEC961E2916B9004 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
0D02C18E16914A687A4A1AC2 /* devDebug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = devDebug.xcconfig; path = Flutter/devDebug.xcconfig; sourceTree = "<group>"; };
@ -366,6 +368,7 @@
82BD91212ADA72360018E523 /* CommonDefine.h */,
76C3321F45DA6AE46ED83204 /* RunnerDebug-dev.entitlements */,
16D90D130794DF74DA656999 /* RunnerRelease-sky.entitlements */,
04BFE7142D14105500A48EC9 /* InfoPlist_sky.xcstrings */,
);
path = Runner;
sourceTree = "<group>";
@ -504,6 +507,7 @@
805C745A7C79091E65665B96 /* devDebug.xcconfig in Resources */,
E0B3E9EE2D04B36C00907A95 /* info_sky.plist in Resources */,
D415555B0C61C5422202D037 /* devProfile.xcconfig in Resources */,
04BFE7152D14105500A48EC9 /* InfoPlist_sky.xcstrings in Resources */,
8A77CDE0EDBCACCE22C29A9E /* devRelease.xcconfig in Resources */,
F0A7A6EF7D83CA92324D9C20 /* preDebug.xcconfig in Resources */,
E0A496CF2CA30CEF00E376BB /* skyPreviewRelease.xcconfig in Resources */,
@ -704,7 +708,7 @@
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-sky.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = SF86QP26TZ;
DEVELOPMENT_TEAM = NAQ5PL2DYC;
INFOPLIST_FILE = Runner/info_sky.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@ -1089,7 +1093,7 @@
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerDebug-dev.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = SF86QP26TZ;
DEVELOPMENT_TEAM = NAQ5PL2DYC;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (

View File

@ -24,7 +24,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug-pre-xhj"
buildConfiguration = "Debug-local"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"

View File

@ -24,7 +24,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug-pre-xhj"
buildConfiguration = "Pre-release-sky"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"

View File

@ -17,6 +17,126 @@
}
}
}
},
"CFBundleName" : {
"comment" : "Bundle name",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "星锁-local"
}
}
}
},
"NSBluetoothAlwaysUsageDescription" : {
"comment" : "Privacy - Bluetooth Always Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "The app uses bluetooth to find, connect and transfer data between different devices"
}
}
}
},
"NSBluetoothPeripheralUsageDescription" : {
"comment" : "Privacy - Bluetooth Peripheral Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "The app uses bluetooth to find, connect and transfer data between different devices"
}
}
}
},
"NSCameraUsageDescription" : {
"comment" : "Privacy - Camera Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用请求相机,以便于拍摄照片,用于头像上传及人脸认证"
}
}
}
},
"NSContactsUsageDescription" : {
"comment" : "Privacy - Contacts Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "Reason we need access to the contact list"
}
}
}
},
"NSLocationAlwaysAndWhenInUseUsageDescription" : {
"comment" : "Privacy - Location Always and When In Use Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用在前台和后台的时候可以搜到更新的位置信息"
}
}
}
},
"NSLocationAlwaysUsageDescription" : {
"comment" : "Privacy - Location Always Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用在后台的时候可以搜到更新的位置信息"
}
}
}
},
"NSLocationWhenInUseUsageDescription" : {
"comment" : "Privacy - Location When In Use Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用在前台的时候可以搜到更新的位置信息"
}
}
}
},
"NSMicrophoneUsageDescription" : {
"comment" : "Privacy - Microphone Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用请求麦克风用来通话"
}
}
}
},
"NSPhotoLibraryUsageDescription" : {
"comment" : "Privacy - Photo Library Usage Description",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "应用请求相册用于头像上传"
}
}
}
}
},
"version" : "1.0"

View File

@ -0,0 +1,23 @@
{
"sourceLanguage" : "zh-Hans",
"strings" : {
"CFBundleDisplayName" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "TTLock Pro"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "锁通通"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>$(BUNDLE_DISPLAY_NAME)</string>
<string>$(BUNDLE_NAME)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>

View File

@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>$(BUNDLE_DISPLAY_NAME)</string>
<string>$(BUNDLE_NAME)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "اتبع النظام"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Следете система"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "এক্ফক্লোসিস্টেম"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Sledovat systém"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Følg systemet"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "System folgen"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Ακολουθήστε το σύστημα"
}

View File

@ -1121,5 +1121,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Follow system"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Seguir sistema"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Süsteemi jälgimine"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Seuraa järjestelmää"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Suivre le système"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "מערכת מעקב"
}

View File

@ -1046,39 +1046,39 @@
"英文": "英语",
"简体中文": "简体中文",
"繁体中文": "繁體中文",
"法语": "法语",
"法语": "Français",
"俄语": "Русский",
"德语": "多伊奇",
"德语": "Deutsch",
"日语": "日本語",
"韩语": "嘻嘻哈哈",
"意大利语": "意大利语",
"韩语": "한국어",
"意大利语": "Italiano",
"乌克兰语": "Українська",
"葡萄牙语": "葡萄牙商业银行",
"西班牙语": "西班牙语",
"葡萄牙语": "Português",
"西班牙语": "Español",
"阿拉伯语": "العربية",
"越南语": "Tiếng Việt",
"马来语": "马来语",
"荷兰语": "荷兰语",
"罗马尼亚语": "罗马ă",
"马来语": "Bahasa Melayu",
"荷兰语": "Nederlands",
"罗马尼亚语": "Română",
"立陶宛语": "Lietuvių",
"瑞典语": "瑞典语",
"瑞典语": "Svenska",
"爱沙尼亚语": "Eesti",
"波兰语": "波兰语",
"斯洛伐克语": "懒散的人č艾娜",
"捷克语": "Češ蒂娜",
"波兰语": "Polski",
"斯洛伐克语": "Slovenčina",
"捷克语": "Čeština",
"希腊语": "Ελληνικά",
"希伯来语": "עברית",
"塞尔维亚语": "Српски",
"土耳其语": "Turkce",
"匈牙利语": "马札尔人的",
"匈牙利语": "Magyar",
"保加利亚语": "Български",
"哈萨克斯坦语": "Қазақ",
"孟加拉语": "বাংলা",
"克罗地亚语": "Hrvatski",
"泰语": "ไทย",
"印度尼西亚语": "印度尼西亚语",
"芬兰语": "芬兰语",
"丹麦语": "丹麦语",
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,锁上的掌骨静脉会被删除。你确定要重置吗?",
"在线": "在线",
"离线": "离线",
@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "跟踪系统"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Prati sistem:"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Follow system"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Sistem mengikuti"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Seguire il sistema"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "システムに従う"
}

View File

@ -1121,5 +1121,6 @@
"月简称": "月简称",
"日简称": "日简称",
"时简称": "时简称",
"分简称": "分简称"
"分简称": "分简称",
"跟随系统": "跟随系统"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Жүйені қолдану"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "시스템을 따르십시오"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Sekti sistema"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Ikut system"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Systeem volgen"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Śledź system"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Siga o sistema"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Urmează sistemul:"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Следуйте системе"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Sledovať systém"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Пратите систем"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Följ system"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "ระบบติดตามผล"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Sistemi takip et"
}

View File

@ -1118,6 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "跟蹤系統"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Система стеження за"
}

View File

@ -1118,5 +1118,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "Hệ thống theo dõi"
}

View File

@ -1122,5 +1122,6 @@
"月简称": "M",
"日简称": "D",
"时简称": "H",
"分简称": "M"
"分简称": "M",
"跟随系统": "跟随系统"
}

View File

@ -33,9 +33,14 @@ class MyApp extends StatefulWidget {
class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: const Size(585, 1265),
builder: (BuildContext w, Widget? a) => _initMaterialApp());
return FutureBuilder(
future: Get.updateLocale(CurrentLocaleTool.getCurrentLocale()),
builder: (BuildContext context, AsyncSnapshot snapshot) {
return ScreenUtilInit(
designSize: const Size(585, 1265),
builder: (BuildContext w, Widget? a) => _initMaterialApp());
},
);
}
GetMaterialApp _initMaterialApp() {
@ -60,23 +65,23 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
GlobalWidgetsLocalizations.delegate,
],
// localeResolutionCallback用于在启动时动态确定应该使用哪种语言和地区
localeResolutionCallback:
(Locale? locale, Iterable<Locale> supportedLocales) {
AppLog.log(
'System device locale: ${Get.deviceLocale} locale$locale');
// if (widget.isLogin) {
//
locale = CurrentLocaleTool.getCurrentLocale();
// } else {
// //
// locale = Get.deviceLocale;
// }
locale = CurrentLocaleTool.convertLocale(locale);
AppLog.log('localeResolutionCallback locale: $locale');
AppManager()
.setLanCode(code: '${locale.languageCode}_${locale.countryCode}');
return Locale(locale.languageCode, locale.countryCode);
},
// localeResolutionCallback:
// (Locale? locale, Iterable<Locale> supportedLocales) {
// AppLog.log(
// 'System device locale: ${Get.deviceLocale} locale$locale');
// // if (widget.isLogin) {
// //
// locale = CurrentLocaleTool.getCurrentLocale();
// // } else {
// // //
// // locale = Get.deviceLocale;
// // }
// locale = CurrentLocaleTool.convertLocale(locale);
// AppLog.log('localeResolutionCallback locale: $locale');
// AppManager()
// .setLanCode(code: '${locale.languageCode}_${locale.countryCode}');
// return Locale(locale.languageCode, locale.countryCode);
// },
// 使
locale: CurrentLocaleTool.getCurrentLocale(),
// locale: Get.deviceLocale,

View File

@ -213,9 +213,7 @@ class BlueManage {
message: '指定设备名称的扫描蓝牙设备 监听扫描结果失败',
detail: '打印失败问题 e${e.toString()}',
upload: false);
AppLog.log(
'扫描失败:$e',
);
AppLog.log('扫描失败:$e');
});
FlutterBluePlus.cancelWhenScanComplete(subscription);
await completer.future;

View File

@ -32,6 +32,7 @@ class LockMainXHJLogic extends BaseGetXController {
final String languageCodeAndCountryCode = entity.data!.lang!;
if (languageCodeAndCountryCode.isEmpty) {
await StoreService.to.saveLanguageCode('');
await Get.updateLocale(Get.deviceLocale!);
} else if (languageCodeAndCountryCode.contains('-')) {
final List<String> parts = languageCodeAndCountryCode.split('-');
final Locale locale = Locale(parts[0], parts[1]);

View File

@ -4,7 +4,7 @@ import 'flavors.dart';
import 'main.dart' as runner;
Future<void> main() async {
F.appFlavor = Flavor.local;
F.appFlavor = Flavor.sky;
// AppLog.log('local调用了main函数');
await runner.main();
}

View File

@ -1,5 +1,4 @@
class GatewayConnectionLockListEntity {
GatewayConnectionLockListEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
@ -27,7 +26,6 @@ class GatewayConnectionLockListEntity {
}
class Data {
Data({this.list, this.total, this.pageNo, this.pageSize});
Data.fromJson(Map<String, dynamic> json) {
@ -59,23 +57,23 @@ class Data {
}
class GatewayConnectionLockItemEntity {
GatewayConnectionLockItemEntity({this.lockId, this.lockAlias, this.rssi});
GatewayConnectionLockItemEntity(
{this.lockId, this.lockAlias, this.gatewayRssi});
GatewayConnectionLockItemEntity.fromJson(Map<String, dynamic> json) {
lockId = json['lockId'];
lockAlias = json['lockAlias'];
rssi = json['rssi'];
gatewayRssi = json['gatewayRssi'];
}
int? lockId;
String? lockAlias;
int? rssi;
int? gatewayRssi;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['lockId'] = lockId;
data['lockAlias'] = lockAlias;
data['rssi'] = rssi;
data['gatewayRssi'] = gatewayRssi;
return data;
}
}
}

View File

@ -56,7 +56,7 @@ class _GatewayConnectionLockListPageState
return _gatewayConnectionLockListItem(
'images/mine/icon_mine_gatewaySignal_prompt.png',
entity.lockAlias ?? '',
'信号强'.tr, () {
entity.gatewayRssi.toString(), () {
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
});
})

View File

@ -15,22 +15,27 @@ class MineMultiLanguageLogic extends GetxController {
//
Future<void> updateUserLangInfo(Locale l) async {
// AppLog.log('lanTypeTitle: $lanTypeTitle');
AppLog.log('selet: ${l.toString()}}');
String lang = l.toString();
if (state.currentLanguageType.value == LanguageType.system) {
lang = '';
}
String currentLanguage = StoreService.to.getLanguageCode()!;
await StoreService.to.saveLanguageCode(lang);
final PasswordKeyListEntity entity =
await ApiRepository.to.updateUserLangInfo(lang: lang);
if (entity.errorCode!.codeIsSuccessful) {
await changeLanguage(l);
await Get.updateLocale(l);
AppLog.log('saveLocale: ${l.toString()}}');
eventBus.fire(ChangeLanguageBlockLastLanguageEvent());
} else {
await StoreService.to.saveLanguageCode(currentLanguage);
}
}
Future<void> changeLanguage(Locale l) async {
await Get.updateLocale(l);
await StoreService.to.saveLanguageCode(
CurrentLocaleTool.convertLocale(Get.locale!).toString());
}
// Future<void> changeLanguage(Locale l) async {
// await StoreService.to.saveLanguageCode(l.toString());
// await Get.updateLocale(l);
// AppLog.log('saveLocale: ${l.toString()}}');
// }
}

View File

@ -36,7 +36,8 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
final String lanTypeTitle =
ExtensionLanguageType.fromLocale(state.seletLocale)
.lanTitle;
Get.back(result: {'currentLanguage': lanTypeTitle});
Get.back(
result: {'currentLanguage': state.seletLocale.toString()});
},
child: Text(
'保存'.tr,
@ -59,7 +60,7 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
final List<Widget> l = <Widget>[];
l.add(
CommonItem(
leftTitel: '跟随系统',
leftTitel: '跟随系统'.tr,
rightTitle: '',
isHaveLine: true,
isHaveDirection: false,

View File

@ -15,7 +15,9 @@ class MineMultiLanguageState {
}
Rx<LanguageType> currentLanguageType =
ExtensionLanguageType.fromLocale(Get.locale!).obs;
StoreService.to.getLanguageCode()!.isEmpty
? LanguageType.system.obs
: ExtensionLanguageType.fromLocale(Get.locale!).obs;
late Locale seletLocale;
}

View File

@ -2,17 +2,14 @@ import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:get/get_state_manager/get_state_manager.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:star_lock/app_settings/app_settings.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';
@ -22,7 +19,8 @@ import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart';
import '../../../tools/wechat/wechatManageTool.dart';
import '../../../tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart';
import '../../../translations/trans_lib.dart';
import '../../../translations/app_dept.dart';
import '../../../translations/current_locale_tool.dart';
class MineSetPage extends StatefulWidget {
MineSetPage({Key? key, this.showAppBar = true, this.showAbout = false})
@ -303,10 +301,10 @@ class _MineSetPageState extends State<MineSetPage>
isHaveDirection: true,
action: () async {
// Get.toNamed(Routers.mineMultiLanguagePage);
await Get.toNamed(Routers.mineMultiLanguagePage)!.then(
(value) => {
state.currentLanguage.value = value['currentLanguage']
});
await Get.toNamed(Routers.mineMultiLanguagePage)!.then((value) {
state.currentLanguage.value = value['currentLanguage'];
setState(() {});
});
});
}),
/* 2024-01-12 by DaisyWu
@ -516,11 +514,23 @@ class _MineSetPageState extends State<MineSetPage>
Expanded(
child: Text(leftTitle!, style: TextStyle(fontSize: 22.sp))),
SizedBox(width: 10.w),
Image.asset(
'images/icon_right_grey.png',
width: 12.w,
height: 21.w,
),
if (CurrentLocaleTool.getCurrentLocaleString() ==
ExtensionLanguageType.fromLanguageType(LanguageType.hebrew)
.toString() ||
CurrentLocaleTool.getCurrentLocaleString() ==
ExtensionLanguageType.fromLanguageType(LanguageType.arabic)
.toString())
Image.asset(
'images/icon_left_grey.png',
width: 21.w,
height: 21.w,
)
else
Image.asset(
'images/icon_right_grey.png',
width: 12.w,
height: 21.w,
),
SizedBox(width: 5.w),
],
),

View File

@ -1,8 +1,10 @@
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
import '../../../tools/store_service.dart';
import '../../../translations/app_dept.dart';
import '../../../translations/current_locale_tool.dart';
@ -24,10 +26,14 @@ class MineSetState {
///
String get currentLanguageName {
return ExtensionLanguageType.fromLocale(
CurrentLocaleTool.getCurrentLocaleWithLanguageCode(
currentLanguage.value))
.lanTitle;
AppLog.log(
'currentLanguage.value:${currentLanguage.value} fsgdsgddfg:${CurrentLocaleTool.getCurrentLocaleWithLanguageCode(currentLanguage.value)}');
return StoreService.to.getLanguageCode()!.isEmpty
? '跟随系统'.tr
: ExtensionLanguageType.fromLocale(CurrentLocaleTool.convertLocale(
CurrentLocaleTool.getCurrentLocaleWithLanguageCode(
currentLanguage.value)))
.lanTitle;
}
RxBool isAmazonAlexa = false.obs; //Alexa

View File

@ -93,13 +93,11 @@ class CommonItem extends StatelessWidget {
if (CurrentLocaleTool.getCurrentLocaleString() ==
ExtensionLanguageType.fromLanguageType(
LanguageType.hebrew)
.toLanguageTag() ||
.toString() ||
CurrentLocaleTool.getCurrentLocaleString() ==
ExtensionLanguageType.fromLanguageType(
LanguageType.arabic)
.toLanguageTag() ||
rightTitle == '希伯来语'.tr ||
rightTitle == '阿拉伯语'.tr)
.toString())
Image.asset(
'images/icon_left_grey.png',
width: 21.w,

View File

@ -8,8 +8,6 @@ import 'app_dept.dart';
class CurrentLocaleTool {
/// Locale字符串
static String getCurrentLocaleString() {
AppLog.log(
'11111StoreService.to.getLanguageCode():${StoreService.to.getLanguageCode()}');
final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
? appDept.deptSupportedLocales
.where((Locale element) =>
@ -21,14 +19,12 @@ class CurrentLocaleTool {
: Get.deviceLocale!; // Get.deviceLocale;
final String languageCode = convertLocale(locale).toString();
AppLog.log(
'11111locale.toString(): ${locale.toString()} locale: $locale languageCode:$languageCode');
'11111locale.toString(): ${locale.toString()} locale: $locale languageCode:$languageCode 从本地获取code:${StoreService.to.getLanguageCode()}');
return languageCode;
}
/// Locale
static Locale getCurrentLocale() {
AppLog.log(
'222StoreService.to.getLanguageCode():${StoreService.to.getLanguageCode()}');
final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
? appDept.deptSupportedLocales
.where((Locale element) =>
@ -40,7 +36,7 @@ class CurrentLocaleTool {
: Get.deviceLocale!; // Get.deviceLocale;
final Locale getLocale = convertLocale(locale);
AppLog.log(
'222locale.toString(): ${locale.toString()} locale: $locale getLocale:$getLocale');
'222locale.toString(): ${locale.toString()} locale: $locale getLocale:$getLocale 从本地获取code:${StoreService.to.getLanguageCode()}');
return getLocale;
}
@ -55,23 +51,95 @@ class CurrentLocaleTool {
}
}
return const Locale('en', 'US');
return Get.deviceLocale!;
}
///
static Locale convertLocale(Locale locale) {
if (locale.languageCode == 'zh') {
if (locale.scriptCode == 'Hans') {
//
return const Locale('zh', 'CN');
} else if (locale.scriptCode == 'Hant') {
//
if (locale.countryCode == 'CN') {
return const Locale('zh', 'TW');
} else if (locale.countryCode == 'HK') {
return const Locale('zh', 'HK');
switch (locale.languageCode) {
case 'zh':
if (locale.scriptCode == 'Hans') {
//
return const Locale('zh', 'CN');
} else if (locale.scriptCode == 'Hant') {
//
if (locale.countryCode == 'CN') {
return const Locale('zh', 'TW');
} else if (locale.countryCode == 'HK') {
return const Locale('zh', 'HK');
}
}
}
break;
case 'en':
return const Locale('en', 'US');
case 'fr':
return const Locale('fr', 'FR');
case 'ru':
return const Locale('ru', 'RU');
case 'de':
return const Locale('de', 'DE');
case 'ja':
return const Locale('ja', 'JP');
case 'ko':
return const Locale('ko', 'KR');
case 'it':
return const Locale('it', 'IT');
case 'uk':
return const Locale('uk', 'UA');
case 'pt':
return const Locale('pt', 'PT');
case 'es':
return const Locale('es', 'ES');
case 'ar':
return const Locale('ar', 'SA');
case 'vi':
return const Locale('vi', 'VN');
case 'ms':
return const Locale('ms', 'MY');
case 'nl':
return const Locale('nl', 'NL');
case 'ro':
return const Locale('ro', 'RO');
case 'lt':
return const Locale('lt', 'LT');
case 'sv':
return const Locale('sv', 'SE');
case 'et':
return const Locale('et', 'EE');
case 'pl':
return const Locale('pl', 'PL');
case 'sk':
return const Locale('sk', 'SK');
case 'cs':
return const Locale('cs', 'CZ');
case 'el':
return const Locale('el', 'GR');
case 'he':
return const Locale('he', 'IL');
case 'sr':
return const Locale('sr', 'RS');
case 'tr':
return const Locale('tr', 'TR');
case 'hu':
return const Locale('hu', 'HU');
case 'bg':
return const Locale('bg', 'BG');
case 'kk':
return const Locale('kk', 'KZ');
case 'bn':
return const Locale('bn', 'BD');
case 'hr':
return const Locale('hr', 'BA');
case 'th':
return const Locale('th', 'TH');
case 'id':
return const Locale('id', 'ID');
case 'fi':
return const Locale('fi', 'FI');
case 'da':
return const Locale('da', 'DK');
default:
return locale;
}
// Locale
return locale;

View File

@ -6,7 +6,7 @@ class TranslationMessage extends Translations {
'zh_CN': TranslationLoader.zhDic,
'en_US': TranslationLoader.enDic,
'zh_TW': TranslationLoader.twDic,
'hk_HK': TranslationLoader.hkDic,
'zh_HK': TranslationLoader.hkDic,
'fr_FR': TranslationLoader.frDic,
'ru_RU': TranslationLoader.ruDic,
'de_DE': TranslationLoader.deDic,

View File

@ -105,6 +105,6 @@ echo -e "\n* 没有发现废弃 API开始编译"
# 编译命令
#flutter clean && flutter pub get
flutter build apk --flavor $environment -t $main_file
#flutter build apk --flavor $environment -t $main_file
#flutter build ios --flavor $environment -t $main_file
#flutter build appbundle --flavor $environment -t $main_file