From 30383710b58d52b43c3c4b0018a5caab3d9726d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CDaisyWu=E2=80=9D?= <“18682150237@163.com”> Date: Tue, 10 Sep 2024 17:20:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E8=B7=9F=E8=BF=9B=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E3=80=81=E6=B3=A8=E5=86=8C=E6=8E=A5=E5=8F=A3=E5=85=A5=E5=8F=82?= =?UTF-8?q?DeviceInfo=E5=86=85=E5=AE=B9=E4=B8=8D=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/XSConstantMacro/XSConstantMacro.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/common/XSConstantMacro/XSConstantMacro.dart b/lib/common/XSConstantMacro/XSConstantMacro.dart index 38485f83..32ebcf6b 100755 --- a/lib/common/XSConstantMacro/XSConstantMacro.dart +++ b/lib/common/XSConstantMacro/XSConstantMacro.dart @@ -100,12 +100,14 @@ class XSConstantMacro { deviceData['deviceBrand'] = androidInfo.brand; deviceData['deviceModel'] = androidInfo.model; deviceData['deviceVersion'] = androidInfo.version.release; + deviceData['deviceID'] = androidInfo.id; deviceData['deviceType'] = 10; } else if (Platform.isIOS) { final IosDeviceInfo iosInfo = await deviceInfo.iosInfo; deviceData['deviceBrand'] = iosInfo.name; - deviceData['deviceModel'] = iosInfo.model; + deviceData['deviceModel'] = iosInfo.utsname.nodename; deviceData['deviceVersion'] = iosInfo.systemVersion; + deviceData['deviceID'] = iosInfo.identifierForVendor; deviceData['deviceType'] = 20; } return deviceData; From 57c7a417427ff3ba23ccd024c11532bc22942bf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CDaisyWu=E2=80=9D?= <“18682150237@163.com”> Date: Wed, 11 Sep 2024 10:43:59 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=AF=B9=E6=8E=A5Google=20Home?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=B9=B6=E5=AE=8C=E6=88=90=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/appRouters.dart | 4 + .../google_home/google_home_logic.dart | 26 +++ .../mineSet/google_home/google_home_page.dart | 120 ++++++++++ .../google_home/google_home_state.dart | 18 ++ lib/mine/mineSet/mineSet/mineSet_logic.dart | 9 + lib/mine/mineSet/mineSet/mineSet_page.dart | 11 +- lib/mine/mineSet/mineSet/mineSet_state.dart | 2 + .../mineSet/userSettingInfoEntity.dart | 10 +- .../valueAddedServicesList_page.dart | 3 +- lib/network/api_provider.dart | 214 ++++++++++-------- lib/network/api_repository.dart | 51 +++-- lib/tools/showTipView.dart | 65 +++++- 12 files changed, 412 insertions(+), 121 deletions(-) create mode 100644 lib/mine/mineSet/google_home/google_home_logic.dart create mode 100644 lib/mine/mineSet/google_home/google_home_state.dart diff --git a/lib/appRouters.dart b/lib/appRouters.dart index d09492e2..760aac4e 100755 --- a/lib/appRouters.dart +++ b/lib/appRouters.dart @@ -47,6 +47,7 @@ import 'package:star_lock/mine/mineSet/amazon_alexa/amazon_alexa_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart'; +import 'package:star_lock/mine/mineSet/google_home/google_home_page.dart'; import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList/lockGroupList_page.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockManage_page.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_page.dart'; @@ -503,6 +504,7 @@ abstract class Routers { static const String login = '/login'; //登录 static const String amazonAlexaPage = '/amazonAlexaPage'; //AmazonAlexa + static const String googleHomePage = '/googleHomePage'; //GoogleHome } abstract class AppRouters { @@ -1172,5 +1174,7 @@ abstract class AppRouters { name: Routers.palmDetailPage, page: () => const PalmDetailPage()), GetPage( name: Routers.amazonAlexaPage, page: () => const AmazonAlexaPage()), + GetPage( + name: Routers.googleHomePage, page: () => const GoogleHomePage()), ]; } diff --git a/lib/mine/mineSet/google_home/google_home_logic.dart b/lib/mine/mineSet/google_home/google_home_logic.dart new file mode 100644 index 00000000..28618b68 --- /dev/null +++ b/lib/mine/mineSet/google_home/google_home_logic.dart @@ -0,0 +1,26 @@ +import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; +import 'package:star_lock/mine/mineSet/google_home/google_home_state.dart'; +import 'package:star_lock/network/api_repository.dart'; +import '../../../../tools/baseGetXController.dart'; + +class GoogleHomeLogic extends BaseGetXController { + final GoogleHomeState state = GoogleHomeState(); + + //更新个人信息-google home + Future updateUserInfoWithGoogle() async { + final PasswordKeyListEntity entity = + await ApiRepository.to.updateUserInfoWithGoogle( + isGoogle: state.isGoogleHome.value ? 0 : 1, + ); + if (entity.errorCode!.codeIsSuccessful) { + state.isGoogleHome.value = !state.isGoogleHome.value; + state.isGoogleHome.refresh(); + if (state.isGoogleHome.value) { + state.isOpenedText.value = '关闭'; + } else { + state.isOpenedText.value = '开启'; + } + showToast('操作成功'); + } + } +} diff --git a/lib/mine/mineSet/google_home/google_home_page.dart b/lib/mine/mineSet/google_home/google_home_page.dart index e69de29b..36b458e4 100644 --- a/lib/mine/mineSet/google_home/google_home_page.dart +++ b/lib/mine/mineSet/google_home/google_home_page.dart @@ -0,0 +1,120 @@ +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/mine/mineSet/google_home/google_home_logic.dart'; +import 'package:star_lock/mine/mineSet/google_home/google_home_state.dart'; +import 'package:star_lock/tools/commonItem.dart'; +import 'package:star_lock/tools/showTipView.dart'; +import 'package:star_lock/tools/submitBtn.dart'; +import '../../../../app_settings/app_colors.dart'; +import '../../../../tools/titleAppBar.dart'; + +class GoogleHomePage extends StatefulWidget { + const GoogleHomePage({Key? key}) : super(key: key); + + @override + State createState() => _GoogleHomePageState(); +} + +class _GoogleHomePageState extends State { + final EdgeInsets _contentPadding = + EdgeInsets.symmetric(horizontal: 20.w, vertical: 20.h); + final GoogleHomeLogic logic = Get.put(GoogleHomeLogic()); + final GoogleHomeState state = Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + resizeToAvoidBottomInset: false, + appBar: TitleAppBar( + barTitle: 'Google Home'.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + ), + body: SingleChildScrollView( + child: Column( + children: [ + _buildTopWidget(), + SizedBox(height: 20.h), + _buildBottomWidget(), + ], + ), + ), + ); + } + + Widget _buildTopWidget() { + return Column( + children: [ + CommonItem( + leftTitel: 'Action name', + rightTitle: 'ScienerSmart', + ), + SizedBox( + height: 20.h, + ), + Obx(() => SubmitBtn( + btnName: state.isOpenedText.value, + onClick: () { + // ShowTipView().showTipWithInputDialog( + // contentText: '', + // sureClick: (String value) { + // Get.back(); + // }, + // sureText: '确定', + // title: '设置安全码'); + logic.updateUserInfoWithGoogle(); + }, + )), + SizedBox( + height: 20.h, + ), + ], + ); + } + + Widget _buildBottomWidget() { + return Container( + color: Colors.white, + width: ScreenUtil().screenWidth, + padding: _contentPadding, + child: Column( + children: [ + _buildInfoSection('支持的语言'.tr, '英语'.tr), + SizedBox(height: 20.h), + _buildInfoSection( + '操作流程'.tr, + '1.用智能锁APP添加锁和网关\n\n2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home \n\n3.安装Google Home APP,点击左上角的“+”按钮\n\n4.在设置页面,选择“与Google协同工作”\n\n5.搜索“ScienerSmart”,并用智能锁APP的账号和密码进行授权\n\n6.在智能锁APP里设置安全码,使用Google Home开锁时提供此安全码' + .tr), + ], + ), + ); + } + + Widget _buildInfoSection(String title, String content) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(Icons.radio_button_checked_outlined, + color: AppColors.mainColor), + SizedBox(width: 6.w), + Text(title.tr, style: TextStyle(fontSize: 20.sp)), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.h, left: 10.w, right: 10.w), + padding: EdgeInsets.all(10.w), + decoration: BoxDecoration( + color: AppColors.lightBlueBgColor, + borderRadius: BorderRadius.circular(6), + ), + child: Text(content.tr, style: TextStyle(fontSize: 20.sp)), + ), + ], + ); + } +} diff --git a/lib/mine/mineSet/google_home/google_home_state.dart b/lib/mine/mineSet/google_home/google_home_state.dart new file mode 100644 index 00000000..0b99f2a2 --- /dev/null +++ b/lib/mine/mineSet/google_home/google_home_state.dart @@ -0,0 +1,18 @@ +import 'package:get/get.dart'; + +class GoogleHomeState { + GoogleHomeState() { + final Map map = Get.arguments; + if (map['isGoogleHome'] != null) { + isGoogleHome.value = map['isGoogleHome']; + if (isGoogleHome.value) { + isOpenedText.value = '关闭'; + } else { + isOpenedText.value = '开启'; + } + } + } + + RxBool isGoogleHome = false.obs; + RxString isOpenedText = '开启'.obs; +} diff --git a/lib/mine/mineSet/mineSet/mineSet_logic.dart b/lib/mine/mineSet/mineSet/mineSet_logic.dart index d095e39c..62a33cde 100755 --- a/lib/mine/mineSet/mineSet/mineSet_logic.dart +++ b/lib/mine/mineSet/mineSet/mineSet_logic.dart @@ -48,6 +48,15 @@ class MineSetLogic extends BaseGetXController { } else { state.isWechatPublicAccountPush.value = false; } + //是否打开Amazon Alexa + entity.data!.isAmazonAlexa! == 1 + ? state.isAmazonAlexa.value = true + : state.isAmazonAlexa.value = false; + + //是否打开Google Home + entity.data!.isGoogleHome! == 1 + ? state.isGoogleHome.value = true + : state.isGoogleHome.value = false; } } diff --git a/lib/mine/mineSet/mineSet/mineSet_page.dart b/lib/mine/mineSet/mineSet/mineSet_page.dart index f84c1ad4..5e00497d 100755 --- a/lib/mine/mineSet/mineSet/mineSet_page.dart +++ b/lib/mine/mineSet/mineSet/mineSet_page.dart @@ -333,8 +333,9 @@ class _MineSetPageState extends State isHaveLine: true, isHaveDirection: true, action: () { - // logic.showToast('功能暂未开放'.tr); - Get.toNamed(Routers.amazonAlexaPage); + Get.toNamed(Routers.amazonAlexaPage, arguments: { + 'isAmazonAlexa': state.isAmazonAlexa.value + }); }), CommonItem( leftTitel: 'Google Home', @@ -342,7 +343,11 @@ class _MineSetPageState extends State isHaveLine: true, isHaveDirection: true, action: () { - logic.showToast('功能暂未开放'.tr); + Get.toNamed(Routers.googleHomePage, arguments: { + 'isGoogleHome': state.isGoogleHome.value + })?.then((Object? value) { + logic.userSettingsInfoRequest(); + }); }), if (!F.isProductionEnv) CommonItem( diff --git a/lib/mine/mineSet/mineSet/mineSet_state.dart b/lib/mine/mineSet/mineSet/mineSet_state.dart index 28a95535..bc2e00a0 100755 --- a/lib/mine/mineSet/mineSet/mineSet_state.dart +++ b/lib/mine/mineSet/mineSet/mineSet_state.dart @@ -16,6 +16,8 @@ class MineSetState { var lockScreen = 2.obs; //锁屏 var hideExpiredAccessFlag = 2.obs; //隐藏无效开锁 var currentLanguage = "".obs; //隐藏无效开锁 + RxBool isAmazonAlexa = false.obs; //亚马逊Alexa + RxBool isGoogleHome = false.obs; //谷歌Home late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); diff --git a/lib/mine/mineSet/mineSet/userSettingInfoEntity.dart b/lib/mine/mineSet/mineSet/userSettingInfoEntity.dart index 5591b7ea..8f7679c4 100755 --- a/lib/mine/mineSet/mineSet/userSettingInfoEntity.dart +++ b/lib/mine/mineSet/mineSet/userSettingInfoEntity.dart @@ -42,6 +42,8 @@ class UserSettingInfoData { int? hasGoogleHome; int? alertMode; int? mpWechatPushSwitch; + int? isAmazonAlexa; + int? isGoogleHome; UserSettingInfoData( {this.userSettings, @@ -56,7 +58,9 @@ class UserSettingInfoData { this.hasCameraLock, this.hasGoogleHome, this.alertMode, - this.mpWechatPushSwitch}); + this.mpWechatPushSwitch, + this.isAmazonAlexa, + this.isGoogleHome}); UserSettingInfoData.fromJson(Map json) { userSettings = json['userSettings'] != null @@ -74,6 +78,8 @@ class UserSettingInfoData { hasGoogleHome = json['hasGoogleHome']; alertMode = json['alertMode']; mpWechatPushSwitch = json['mpWechatPushSwitch']; + isAmazonAlexa = json['is_amazon_alexa']; + isGoogleHome = json['is_google_home']; } Map toJson() { @@ -93,6 +99,8 @@ class UserSettingInfoData { data['hasGoogleHome'] = hasGoogleHome; data['alertMode'] = alertMode; data['mpWechatPushSwitch'] = mpWechatPushSwitch; + data['is_amazon_alexa'] = isAmazonAlexa; + data['is_google_home'] = isGoogleHome; return data; } } diff --git a/lib/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart b/lib/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart index bba7972a..5c80cddb 100755 --- a/lib/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart +++ b/lib/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart @@ -128,7 +128,8 @@ class _ValueAddedServicesPageListState fontWeight: FontWeight.w600), ), 'Google Home', () { - EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds); + // EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds); + Get.toNamed(Routers.googleHomePage); }), if (!F.isProductionEnv) _valueAddedServicesItem( diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart index 0c41a23b..10e8fed7 100755 --- a/lib/network/api_provider.dart +++ b/lib/network/api_provider.dart @@ -342,13 +342,15 @@ class ApiProvider extends BaseProvider { ); // 锁记录上传 - Future lockReportLockSuccessfullyUploadData(int lockId, int keyId) => post( - lockRecordUploadURL.toUrl, - jsonEncode({ - 'lockId': lockId, - 'keyId': keyId, - }), - isUnShowLoading: true); + Future lockReportLockSuccessfullyUploadData( + int lockId, int keyId) => + post( + lockRecordUploadURL.toUrl, + jsonEncode({ + 'lockId': lockId, + 'keyId': keyId, + }), + isUnShowLoading: true); // 获取手机联网token Future getLockNetToken(String lockId) => post( @@ -1477,7 +1479,7 @@ class ApiProvider extends BaseProvider { // 获取遥控列表 Future getRemoteControlListData( - String lockId, String pageNo, String pageSize, String searchStr) => + String lockId, String pageNo, String pageSize, String searchStr) => post( getRemoteControlListURL.toUrl, jsonEncode({ @@ -1489,21 +1491,21 @@ class ApiProvider extends BaseProvider { // 添加遥控 Future addRemoteControlData( - String lockId, - String remoteName, - String remoteNumber, - int remoteType, - int startDate, - int endDate, - int addType, - List weekDay, - int startTime, - int endTime, - int remoteRight, - // String mac, - // int electricQuantity, - // List firmwareInfo - ) => + String lockId, + String remoteName, + String remoteNumber, + int remoteType, + int startDate, + int endDate, + int addType, + List weekDay, + int startTime, + int endTime, + int remoteRight, + // String mac, + // int electricQuantity, + // List firmwareInfo + ) => post( addRemoteControlURL.toUrl, jsonEncode({ @@ -1525,27 +1527,30 @@ class ApiProvider extends BaseProvider { // 更新遥控序号 Future updateRemoteUserNoLoadData( - int lockId, int remoteId, String remoteUserNo) => + int lockId, int remoteId, String remoteUserNo) => post( updateRemoteUserNoURL.toUrl, - jsonEncode( - {'lockId': lockId, 'remoteId': remoteId, 'remoteUserNo': remoteUserNo})); + jsonEncode({ + 'lockId': lockId, + 'remoteId': remoteId, + 'remoteUserNo': remoteUserNo + })); // 编辑遥控 Future editRemoteControlData( - int lockId, - int remoteId, - int startDate, - int endDate, - int startTime, - int endTime, - int remoteType, - List weekDay, - String remoteName, - int addType, - int isCoerced, - int remoteRight, - ) => + int lockId, + int remoteId, + int startDate, + int endDate, + int startTime, + int endTime, + int remoteType, + List weekDay, + String remoteName, + int addType, + int isCoerced, + int remoteRight, + ) => post( editRemoteControlURL.toUrl, jsonEncode({ @@ -1564,30 +1569,28 @@ class ApiProvider extends BaseProvider { })); // 删除遥控 - Future deletRemoteControlData(int remoteId) => - post( - deleteRemoteControlURL.toUrl, - jsonEncode({ - 'remoteId': remoteId, - })); + Future deletRemoteControlData(int remoteId) => post( + deleteRemoteControlURL.toUrl, + jsonEncode({ + 'remoteId': remoteId, + })); // 重置遥控 - Future resetRemoteControlData(int lockId) => - post( - clearRemoteControlURL.toUrl, - jsonEncode({ - 'lockId': lockId, - })); + Future resetRemoteControlData(int lockId) => post( + clearRemoteControlURL.toUrl, + jsonEncode({ + 'lockId': lockId, + })); // 校验遥控名字是否重复 Future checkRemoteControlNameDuplicatedData( - String lockId, String remoteName) => + String lockId, String remoteName) => post(checkRemoteControlNameURL.toUrl, jsonEncode({'lockId': lockId, 'remoteName': remoteName})); // 获取掌静脉列表 Future getPalmListData( - String lockId, String pageNo, String pageSize, String searchStr) => + String lockId, String pageNo, String pageSize, String searchStr) => post( getPalmListURL.toUrl, jsonEncode({ @@ -1599,18 +1602,17 @@ class ApiProvider extends BaseProvider { // 添加掌静脉 Future addPalmData( - String lockId, - String palmVeinName, - String palmVeinNumber, - int palmVeinType, - int startDate, - int endDate, - int addType, - List weekDay, - int startTime, - int endTime, - int palmVeinRight - ) => + String lockId, + String palmVeinName, + String palmVeinNumber, + int palmVeinType, + int startDate, + int endDate, + int addType, + List weekDay, + int startTime, + int endTime, + int palmVeinRight) => post( addPalmURL.toUrl, jsonEncode({ @@ -1629,27 +1631,30 @@ class ApiProvider extends BaseProvider { // 更新掌静脉序号 Future updatePalmUserNoLoadData( - int lockId, int palmVeinId, String palmVeinUserNo) => + int lockId, int palmVeinId, String palmVeinUserNo) => post( updatePalmUserNoURL.toUrl, - jsonEncode( - {'lockId': lockId, 'palmVeinId': palmVeinId, 'palmVeinUserNo': palmVeinUserNo})); + jsonEncode({ + 'lockId': lockId, + 'palmVeinId': palmVeinId, + 'palmVeinUserNo': palmVeinUserNo + })); // 编辑掌静脉 Future editPalmData( - int lockId, - int palmVeinId, - int startDate, - int endDate, - int startTime, - int endTime, - int palmVeinType, - List weekDay, - String palmVeinName, - int addType, - int isCoerced, - int palmVeinRight, - ) => + int lockId, + int palmVeinId, + int startDate, + int endDate, + int startTime, + int endTime, + int palmVeinType, + List weekDay, + String palmVeinName, + int addType, + int isCoerced, + int palmVeinRight, + ) => post( editPalmURL.toUrl, jsonEncode({ @@ -1668,24 +1673,22 @@ class ApiProvider extends BaseProvider { })); // 删除掌静脉 - Future deletPalmData(int palmVeinId) => - post( - deletePalmURL.toUrl, - jsonEncode({ - 'palmVeinId': palmVeinId, - })); + Future deletPalmData(int palmVeinId) => post( + deletePalmURL.toUrl, + jsonEncode({ + 'palmVeinId': palmVeinId, + })); // 重置掌静脉 - Future resetPalmData(int lockId) => - post( - clearPalmURL.toUrl, - jsonEncode({ - 'lockId': lockId, - })); + Future resetPalmData(int lockId) => post( + clearPalmURL.toUrl, + jsonEncode({ + 'lockId': lockId, + })); // 校验掌静脉名字是否重复 Future checkPalmNameDuplicatedData( - String lockId, String palmVeinName) => + String lockId, String palmVeinName) => post(checkPalmNameURL.toUrl, jsonEncode({'lockId': lockId, 'palmVeinName': palmVeinName})); @@ -1932,6 +1935,20 @@ class ApiProvider extends BaseProvider { 'headUrl': headUrl, })); + //更新个人信息-是否打开amazon alexa 0否 1是 + Future updateUserInfoWithAlexa(int isAlexa) => post( + updateUserInfoURL.toUrl, + jsonEncode({ + 'is_amazon_alexa': isAlexa, + })); + + //更新个人信息-是否打开google home 0否 1是 + Future updateUserInfoWithGoogle(int isGoogle) => post( + updateUserInfoURL.toUrl, + jsonEncode({ + 'is_google_home': isGoogle, + })); + //修改绑定手机号 Future bindPhone(String countryCode, String account, String verificationCode, String unbindToken) => @@ -2125,8 +2142,7 @@ class ApiProvider extends BaseProvider { })); // 设置面容防误开 - Future updateFacePreventMisrun( - int lockId, int faceEnErrUnlock) => + Future updateFacePreventMisrun(int lockId, int faceEnErrUnlock) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -2588,9 +2604,9 @@ class ApiProvider extends BaseProvider { // 获取锁信息列表 Future updateZoneOffsetsAndLanguages( - int timezoneOffset, - // String language - ) => + int timezoneOffset, + // String language + ) => post( updateZoneOffsetsAndLanguagesURL.toUrl, jsonEncode({ diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart index 454e7fb8..fe9c5913 100755 --- a/lib/network/api_repository.dart +++ b/lib/network/api_repository.dart @@ -314,7 +314,8 @@ class ApiRepository { // 电子钥匙开锁成功上报 Future lockReportLockSuccessfullyUploadData( {required int lockId, required int keyId}) async { - final res = await apiProvider.lockReportLockSuccessfullyUploadData(lockId, keyId); + final res = + await apiProvider.lockReportLockSuccessfullyUploadData(lockId, keyId); return KeyOperationRecordEntity.fromJson(res.body); } @@ -1705,8 +1706,8 @@ class ApiRepository { // 更新ICCard用户序号 Future updateRemoteUserNoLoadData( {required int lockId, - required int remoteId, - required String remoteUserNo}) async { + required int remoteId, + required String remoteUserNo}) async { final res = await apiProvider.updateRemoteUserNoLoadData( lockId, remoteId, remoteUserNo); return LoginEntity.fromJson(res.body); @@ -1758,7 +1759,8 @@ class ApiRepository { // 校验遥控名字是否重复 Future checkRemoteControlNameDuplicatedData( {required String lockId, required String remoteName}) async { - final res = await apiProvider.checkRemoteControlNameDuplicatedData(lockId, remoteName); + final res = await apiProvider.checkRemoteControlNameDuplicatedData( + lockId, remoteName); return LoginEntity.fromJson(res.body); } @@ -1769,8 +1771,8 @@ class ApiRepository { required String pageSize, required String searchStr, }) async { - final res = await apiProvider.getPalmListData( - lockId, pageNo, pageSize, searchStr); + final res = + await apiProvider.getPalmListData(lockId, pageNo, pageSize, searchStr); return FingerprintListDataEntity.fromJson(res.body); } @@ -1806,8 +1808,8 @@ class ApiRepository { // 更新掌静脉用户序号 Future updatePalmUserNoLoadData( {required int lockId, - required int palmVeinId, - required String palmVeinUserNo}) async { + required int palmVeinId, + required String palmVeinUserNo}) async { final res = await apiProvider.updatePalmUserNoLoadData( lockId, palmVeinId, palmVeinUserNo); return LoginEntity.fromJson(res.body); @@ -1859,7 +1861,8 @@ class ApiRepository { // 校验掌静脉名字是否重复 Future checkPalmNameDuplicatedData( {required String lockId, required String palmVeinName}) async { - final res = await apiProvider.checkPalmNameDuplicatedData(lockId, palmVeinName); + final res = + await apiProvider.checkPalmNameDuplicatedData(lockId, palmVeinName); return LoginEntity.fromJson(res.body); } @@ -1977,6 +1980,22 @@ class ApiRepository { return PasswordKeyListEntity.fromJson(res.body); } +//更新个人信息-是否打开amazon alexa 0否 1是 + Future updateUserInfoWithAlexa({ + required int isAlexa, + }) async { + final res = await apiProvider.updateUserInfoWithAlexa(isAlexa); + return PasswordKeyListEntity.fromJson(res.body); + } + + //更新个人信息-是否打开google home 0否 1是 + Future updateUserInfoWithGoogle({ + required int isGoogle, + }) async { + final res = await apiProvider.updateUserInfoWithGoogle(isGoogle); + return PasswordKeyListEntity.fromJson(res.body); + } + //修改绑定手机号 Future bindPhone(String countryCode, String account, String verificationCode, String unbindToken) async { @@ -2579,13 +2598,13 @@ class ApiRepository { } // 更新云用户时区偏移与语言 - Future updateZoneOffsetsAndLanguages( - { - required int timezoneOffset, - // required String language - }) async { - final res = await apiProvider.updateZoneOffsetsAndLanguages(timezoneOffset, - // language + Future updateZoneOffsetsAndLanguages({ + required int timezoneOffset, + // required String language + }) async { + final res = await apiProvider.updateZoneOffsetsAndLanguages( + timezoneOffset, + // language ); return LoginEntity.fromJson(res.body); } diff --git a/lib/tools/showTipView.dart b/lib/tools/showTipView.dart index c38d3dea..3a6ed329 100755 --- a/lib/tools/showTipView.dart +++ b/lib/tools/showTipView.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/tools/showTFView.dart'; @@ -125,7 +126,7 @@ class ShowTipView { ); } - void resetGetController(){ + void resetGetController() { getController.text = ''; } @@ -148,4 +149,66 @@ class ShowTipView { }, ); } + + //输入框的弹窗 + void showTipWithInputDialog({ + required String title, + required String sureText, + required String contentText, + required Function(String) sureClick, + String cancelText = '取消', + VoidCallback? onCancel, + }) { + final TextEditingController controller = TextEditingController(); + controller.text = contentText; + + showDialog( + context: Get.context!, + barrierDismissible: true, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: Text( + title, + style: TextStyle(color: AppColors.blackColor), + ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 16), + CupertinoTextField( + controller: controller, + placeholder: '请输入', + style: TextStyle(color: AppColors.blackColor), + ), + const SizedBox(height: 16), + ], + ), + actions: [ + CupertinoDialogAction( + child: Text( + cancelText, + style: TextStyle(color: AppColors.blackColor), + ), + onPressed: () { + if (onCancel != null) { + onCancel(); + } + Get.back(); + }, + ), + CupertinoDialogAction( + child: Text( + sureText, + style: const TextStyle(color: AppColors.blueTextTipsColor), + ), + onPressed: () { + sureClick(controller.text); + // Get.back(); // 关闭弹窗 + }, + ), + ], + ); + }, + ); + } }