fix: 修复开锁页-给邮箱发电子钥匙、授权管理员、群发钥匙-接收者、批量授权选其他国家都能发送—关联多个bug
This commit is contained in:
parent
4ec711fcc7
commit
484416255f
@ -333,6 +333,16 @@ class AuthorizedAdminLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
super.onInit();
|
||||||
|
|
||||||
|
// 监听输入框变化
|
||||||
|
state.emailOrPhoneController.addListener(() {
|
||||||
|
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
|||||||
import 'package:star_lock/tools/pickers/pickers.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/date_mode.dart';
|
||||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||||
|
import 'package:star_lock/tools/regularExpression.dart';
|
||||||
import 'package:star_lock/tools/showTipView.dart';
|
import 'package:star_lock/tools/showTipView.dart';
|
||||||
import 'package:star_lock/tools/storage.dart';
|
import 'package:star_lock/tools/storage.dart';
|
||||||
|
|
||||||
@ -114,29 +115,32 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
|||||||
// isHaveRightWidget: true,
|
// isHaveRightWidget: true,
|
||||||
// rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
|
// rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
|
||||||
perpetualKeyWidget('接收者'.tr, '请输入手机号或者邮箱'.tr),
|
perpetualKeyWidget('接收者'.tr, '请输入手机号或者邮箱'.tr),
|
||||||
CommonItem(
|
Obx(() => Visibility(
|
||||||
leftTitel: '国家/地区'.tr,
|
visible: RegularExpression()
|
||||||
rightTitle: '',
|
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||||
isHaveLine: true,
|
child: CommonItem(
|
||||||
isHaveRightWidget: true,
|
leftTitel: '国家/地区'.tr,
|
||||||
isHaveDirection: true,
|
rightTitle: '',
|
||||||
rightWidget: Text(
|
isHaveLine: true,
|
||||||
'${state.countryName.value} +${state.countryCode.value}',
|
isHaveRightWidget: true,
|
||||||
textAlign: TextAlign.end,
|
isHaveDirection: true,
|
||||||
style:
|
rightWidget: Text(
|
||||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
'${state.countryName.value} +${state.countryCode.value}',
|
||||||
),
|
textAlign: TextAlign.end,
|
||||||
action: () async {
|
style: TextStyle(
|
||||||
final Object? result = await Navigator.pushNamed(
|
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||||
context, Routers.selectCountryRegionPage);
|
),
|
||||||
if (result != null) {
|
action: () async {
|
||||||
result as Map<String, dynamic>;
|
final Object? result = await Navigator.pushNamed(
|
||||||
state.countryCode.value = result['code'];
|
context, Routers.selectCountryRegionPage);
|
||||||
state.countryName.value = result['countryName'];
|
if (result != null) {
|
||||||
setState(() {});
|
result as Map<String, dynamic>;
|
||||||
}
|
state.countryCode.value = result['code'];
|
||||||
},
|
state.countryName.value = result['countryName'];
|
||||||
),
|
setState(() {});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
))),
|
||||||
KeyNameItem(
|
KeyNameItem(
|
||||||
leftTitel: '姓名'.tr,
|
leftTitel: '姓名'.tr,
|
||||||
rightTitle: '请输入'.tr,
|
rightTitle: '请输入'.tr,
|
||||||
@ -268,6 +272,10 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
color: AppColors.greyLineColor, // 设置边框颜色
|
||||||
|
height: 2.0.h, //
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -571,6 +579,9 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
|||||||
BorderSide(width: 0, color: Colors.transparent)),
|
BorderSide(width: 0, color: Colors.transparent)),
|
||||||
contentPadding: const EdgeInsets.symmetric(vertical: 0),
|
contentPadding: const EdgeInsets.symmetric(vertical: 0),
|
||||||
),
|
),
|
||||||
|
onChanged: (value) {
|
||||||
|
logic.update();
|
||||||
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
|||||||
class AuthorizedAdminState {
|
class AuthorizedAdminState {
|
||||||
final TextEditingController emailOrPhoneController =
|
final TextEditingController emailOrPhoneController =
|
||||||
TextEditingController(); //邮箱/手机号输入框
|
TextEditingController(); //邮箱/手机号输入框
|
||||||
|
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||||
final TextEditingController keyNameController =
|
final TextEditingController keyNameController =
|
||||||
TextEditingController(); //钥匙名输入框
|
TextEditingController(); //钥匙名输入框
|
||||||
late TabController tabController;
|
late TabController tabController;
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart';
|
import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart';
|
||||||
import 'package:star_lock/network/api_repository.dart';
|
import 'package:star_lock/network/api_repository.dart';
|
||||||
@ -57,4 +56,13 @@ class VolumeAuthorizationLockLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
super.onInit();
|
||||||
|
|
||||||
|
// 监听输入框变化
|
||||||
|
state.emailOrPhoneController.addListener(() {
|
||||||
|
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@ -11,6 +10,7 @@ import 'package:star_lock/main/lockDetail/authorizedAdmin/volumeAuthorizationLoc
|
|||||||
import 'package:star_lock/tools/pickers/pickers.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/date_mode.dart';
|
||||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||||
|
import 'package:star_lock/tools/regularExpression.dart';
|
||||||
import 'package:star_lock/tools/showTipView.dart';
|
import 'package:star_lock/tools/showTipView.dart';
|
||||||
|
|
||||||
import '../../../../appRouters.dart';
|
import '../../../../appRouters.dart';
|
||||||
@ -90,40 +90,38 @@ class _VolumeAuthorizationLockPageState
|
|||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: getTFWidget(
|
rightWidget: getTFWidget(
|
||||||
true,
|
true, '请输入手机号或者邮箱'.tr, state.emailOrPhoneController)),
|
||||||
'请输入手机号或者邮箱'.tr,
|
Obx(() => Visibility(
|
||||||
state.emailOrPhoneController)),
|
visible: RegularExpression()
|
||||||
CommonItem(
|
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||||
leftTitel: '国家/地区'.tr,
|
child: CommonItem(
|
||||||
rightTitle: '',
|
leftTitel: '国家/地区'.tr,
|
||||||
isHaveLine: true,
|
rightTitle: '',
|
||||||
isHaveRightWidget: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: Text(
|
isHaveDirection: true,
|
||||||
'${state.countryName.value} +${state.countryCode.value}',
|
rightWidget: Text(
|
||||||
textAlign: TextAlign.end,
|
'${state.countryName.value} +${state.countryCode.value}',
|
||||||
style:
|
textAlign: TextAlign.end,
|
||||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
style: TextStyle(
|
||||||
),
|
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||||
action: () async {
|
),
|
||||||
final Object? result = await Navigator.pushNamed(
|
action: () async {
|
||||||
context, Routers.selectCountryRegionPage);
|
final Object? result = await Navigator.pushNamed(
|
||||||
if (result != null) {
|
context, Routers.selectCountryRegionPage);
|
||||||
result as Map<String, dynamic>;
|
if (result != null) {
|
||||||
state.countryCode.value = result['code'];
|
result as Map<String, dynamic>;
|
||||||
state.countryName.value = result['countryName'];
|
state.countryCode.value = result['code'];
|
||||||
// setState(() {});
|
state.countryName.value = result['countryName'];
|
||||||
}
|
// setState(() {});
|
||||||
},
|
}
|
||||||
),
|
},
|
||||||
|
))),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '姓名'.tr,
|
leftTitel: '姓名'.tr,
|
||||||
rightTitle: '',
|
rightTitle: '',
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: getTFWidget(
|
rightWidget: getTFWidget(false, '请输入'.tr, state.keyNameController)),
|
||||||
false,
|
|
||||||
'请输入'.tr,
|
|
||||||
state.keyNameController)),
|
|
||||||
Container(height: 10.h),
|
Container(height: 10.h),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -186,7 +184,8 @@ class _VolumeAuthorizationLockPageState
|
|||||||
: state.lockIdList.length.toString(),
|
: state.lockIdList.length.toString(),
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () async {
|
action: () async {
|
||||||
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
|
final result = await Get.toNamed(
|
||||||
|
Routers.massSendLockGroupListPage,
|
||||||
arguments: <String, Object>{
|
arguments: <String, Object>{
|
||||||
'keyLimits': '1',
|
'keyLimits': '1',
|
||||||
'lockIdList': state.lockIdList.value
|
'lockIdList': state.lockIdList.value
|
||||||
|
|||||||
@ -4,8 +4,11 @@ import 'package:get/get.dart';
|
|||||||
|
|
||||||
class VolumeAuthorizationLockState {
|
class VolumeAuthorizationLockState {
|
||||||
final FlutterContactPicker contactPicker = FlutterContactPicker();
|
final FlutterContactPicker contactPicker = FlutterContactPicker();
|
||||||
final TextEditingController emailOrPhoneController = TextEditingController(); //邮箱/手机号输入框
|
final TextEditingController emailOrPhoneController =
|
||||||
final TextEditingController keyNameController = TextEditingController(); //钥匙名输入框
|
TextEditingController(); //邮箱/手机号输入框
|
||||||
|
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||||
|
final TextEditingController keyNameController =
|
||||||
|
TextEditingController(); //钥匙名输入框
|
||||||
late Contact contact;
|
late Contact contact;
|
||||||
RxList<int> lockIdList = <int>[].obs;
|
RxList<int> lockIdList = <int>[].obs;
|
||||||
RxBool isSendSuccess = false.obs;
|
RxBool isSendSuccess = false.obs;
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
@ -17,7 +16,8 @@ import 'massSendElectronicKey_logic.dart';
|
|||||||
import 'massSendElectronicKey_state.dart';
|
import 'massSendElectronicKey_state.dart';
|
||||||
|
|
||||||
class MassSendElectronicKeyPage extends StatefulWidget {
|
class MassSendElectronicKeyPage extends StatefulWidget {
|
||||||
const MassSendElectronicKeyPage({required this.type, Key? key}) : super(key: key);
|
const MassSendElectronicKeyPage({required this.type, Key? key})
|
||||||
|
: super(key: key);
|
||||||
final String type;
|
final String type;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -26,8 +26,10 @@ class MassSendElectronicKeyPage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||||
final MassSendElectronicKeyLogic logic = Get.put(MassSendElectronicKeyLogic());
|
final MassSendElectronicKeyLogic logic =
|
||||||
final MassSendElectronicKeyState state = Get.find<MassSendElectronicKeyLogic>().state;
|
Get.put(MassSendElectronicKeyLogic());
|
||||||
|
final MassSendElectronicKeyState state =
|
||||||
|
Get.find<MassSendElectronicKeyLogic>().state;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
initState() {
|
initState() {
|
||||||
@ -47,9 +49,7 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
state.type.value = widget.type;
|
state.type.value = widget.type;
|
||||||
|
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
child: state.isDemoMode
|
child: state.isDemoMode ? indexChangeWidget() : Obx(indexChangeWidget),
|
||||||
? indexChangeWidget()
|
|
||||||
: Obx(indexChangeWidget),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,25 +153,25 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
return Column(
|
return Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: '接收者'.tr,
|
leftTitel: '接收者'.tr,
|
||||||
rightTitle: state.receiverList.value.isEmpty
|
rightTitle: state.receiverList.value.isEmpty
|
||||||
? '请添加'.tr
|
? '请添加'.tr
|
||||||
: state.receiverList.value.length.toString(),
|
: state.receiverList.value.length.toString(),
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Navigator.pushNamed(context, Routers.massSendReceiverPage,
|
Navigator.pushNamed(context, Routers.massSendReceiverPage,
|
||||||
arguments: <String, List>{
|
arguments: <String, List>{
|
||||||
'lockUserList': state.receiverList.value,
|
'lockUserList': state.receiverList.value,
|
||||||
}).then((Object? value) {
|
}).then((Object? value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
value as Map<String, dynamic>;
|
value as Map<String, dynamic>;
|
||||||
state.receiverList.value = value['lockUserList'];
|
state.receiverList.value = value['lockUserList'];
|
||||||
// setState(() {});
|
// setState(() {});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '国家/地区'.tr,
|
leftTitel: '国家/地区'.tr,
|
||||||
rightTitle: '',
|
rightTitle: '',
|
||||||
@ -202,7 +202,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
: state.lockIdList.length.toString(),
|
: state.lockIdList.length.toString(),
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () async {
|
action: () async {
|
||||||
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
|
final result = await Get.toNamed(
|
||||||
|
Routers.massSendLockGroupListPage,
|
||||||
arguments: <String, Object>{
|
arguments: <String, Object>{
|
||||||
'keyLimits': '2',
|
'keyLimits': '2',
|
||||||
'lockIdList': state.lockIdList
|
'lockIdList': state.lockIdList
|
||||||
@ -235,7 +236,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
PDuration selectDate =
|
PDuration selectDate =
|
||||||
PDuration.parse(DateTime.tryParse(state.beginTime.value));
|
PDuration.parse(DateTime.tryParse(state.beginTime.value));
|
||||||
Pickers.showDatePicker(context,
|
Pickers.showDatePicker(context,
|
||||||
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
selectDate: selectDate,
|
||||||
|
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||||
state.beginTime.value = DateTool().getYMDHNDateString(p, 1);
|
state.beginTime.value = DateTool().getYMDHNDateString(p, 1);
|
||||||
});
|
});
|
||||||
})),
|
})),
|
||||||
@ -244,8 +246,11 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
rightTitle: state.endTime.value,
|
rightTitle: state.endTime.value,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
PDuration selectDate = PDuration.parse(DateTime.tryParse(state.endTime.value));
|
PDuration selectDate =
|
||||||
Pickers.showDatePicker(context, selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||||
|
Pickers.showDatePicker(context,
|
||||||
|
selectDate: selectDate,
|
||||||
|
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||||
state.endTime.value = DateTool().getYMDHNDateString(p, 1);
|
state.endTime.value = DateTool().getYMDHNDateString(p, 1);
|
||||||
});
|
});
|
||||||
})),
|
})),
|
||||||
@ -279,14 +284,14 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
action: () async {
|
action: () async {
|
||||||
var result =
|
var result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
|
||||||
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: <String, Object>{
|
arguments: <String, Object>{
|
||||||
'validityValue': state.weekdaysList.value,
|
'validityValue': state.weekdaysList.value,
|
||||||
'starDate': state.beginTime.value,
|
'starDate': state.beginTime.value,
|
||||||
'endDate': state.endTime.value,
|
'endDate': state.endTime.value,
|
||||||
'starTime': state.effectiveDateTime.value,
|
'starTime': state.effectiveDateTime.value,
|
||||||
'endTime': state.failureDateTime.value
|
'endTime': state.failureDateTime.value
|
||||||
});
|
});
|
||||||
if (result != null && result.isNotEmpty) {
|
if (result != null && result.isNotEmpty) {
|
||||||
state.weekdaysList.value = result['validityValue'];
|
state.weekdaysList.value = result['validityValue'];
|
||||||
state.beginTime.value = result['starDate'];
|
state.beginTime.value = result['starDate'];
|
||||||
@ -376,5 +381,4 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,6 +39,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
|||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
|
|
||||||
|
// 监听输入框变化
|
||||||
|
state.emailOrPhoneController.addListener(() {
|
||||||
|
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||||
|
});
|
||||||
|
|
||||||
Storage.getBool(ifIsDemoModeOrNot)
|
Storage.getBool(ifIsDemoModeOrNot)
|
||||||
.then((bool? value) => state.isDemoMode = value ?? false);
|
.then((bool? value) => state.isDemoMode = value ?? false);
|
||||||
}
|
}
|
||||||
@ -186,10 +191,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
|||||||
final String getMobile = (await Storage.getMobile())!;
|
final String getMobile = (await Storage.getMobile())!;
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
ApmHelper.instance.trackEvent('add_electronic_key', {
|
ApmHelper.instance.trackEvent('add_electronic_key', {
|
||||||
'lock_name':BlueManage().connectDeviceName,
|
'lock_name': BlueManage().connectDeviceName,
|
||||||
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
'account':
|
||||||
'date':DateTool().getNowDateWithType(1),
|
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||||
'add_electronic_key_result':'成功',
|
'date': DateTool().getNowDateWithType(1),
|
||||||
|
'add_electronic_key_result': '成功',
|
||||||
});
|
});
|
||||||
|
|
||||||
emailOrPhone = state.emailOrPhoneController.text;
|
emailOrPhone = state.emailOrPhoneController.text;
|
||||||
@ -202,10 +208,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
|||||||
eventBus.fire(ElectronicKeyListRefreshUI());
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
||||||
} else {
|
} else {
|
||||||
ApmHelper.instance.trackEvent('add_electronic_key', {
|
ApmHelper.instance.trackEvent('add_electronic_key', {
|
||||||
'lock_name':BlueManage().connectDeviceName,
|
'lock_name': BlueManage().connectDeviceName,
|
||||||
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
'account':
|
||||||
'date':DateTool().getNowDateWithType(1),
|
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||||
'add_electronic_key_result':'${entity.errorCode}--${entity.errorMsg}',
|
'date': DateTool().getNowDateWithType(1),
|
||||||
|
'add_electronic_key_result': '${entity.errorCode}--${entity.errorMsg}',
|
||||||
});
|
});
|
||||||
|
|
||||||
emailOrPhone = null;
|
emailOrPhone = null;
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
|||||||
import 'package:star_lock/tools/pickers/pickers.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/date_mode.dart';
|
||||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||||
|
import 'package:star_lock/tools/regularExpression.dart';
|
||||||
import 'package:star_lock/tools/showTipView.dart';
|
import 'package:star_lock/tools/showTipView.dart';
|
||||||
import 'package:star_lock/tools/submitBtn.dart';
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
@ -114,29 +115,33 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
|
|||||||
// 1,
|
// 1,
|
||||||
// logic)),
|
// logic)),
|
||||||
perpetualKeyWidget(logic, '接收者'.tr, '请输入手机号或者邮箱'.tr),
|
perpetualKeyWidget(logic, '接收者'.tr, '请输入手机号或者邮箱'.tr),
|
||||||
CommonItem(
|
Obx(() => Visibility(
|
||||||
leftTitel: '国家/地区'.tr,
|
visible: RegularExpression()
|
||||||
rightTitle: '',
|
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||||
isHaveLine: true,
|
child: CommonItem(
|
||||||
isHaveRightWidget: true,
|
leftTitel: '国家/地区'.tr,
|
||||||
isHaveDirection: true,
|
rightTitle: '',
|
||||||
rightWidget: Text(
|
isHaveLine: true,
|
||||||
'${logic.state.countryName} +${logic.state.countryCode}',
|
isHaveRightWidget: true,
|
||||||
textAlign: TextAlign.end,
|
isHaveDirection: true,
|
||||||
style:
|
rightWidget: Text(
|
||||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
'${logic.state.countryName} +${logic.state.countryCode}',
|
||||||
),
|
textAlign: TextAlign.end,
|
||||||
action: () async {
|
style: TextStyle(
|
||||||
final Object? result = await Navigator.pushNamed(
|
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||||
context, Routers.selectCountryRegionPage);
|
),
|
||||||
if (result != null) {
|
action: () async {
|
||||||
result as Map<String, dynamic>;
|
final Object? result = await Navigator.pushNamed(
|
||||||
logic.state.countryCode = result['code'];
|
context, Routers.selectCountryRegionPage);
|
||||||
logic.state.countryName = result['countryName'];
|
if (result != null) {
|
||||||
logic.update();
|
result as Map<String, dynamic>;
|
||||||
}
|
logic.state.countryCode = result['code'];
|
||||||
},
|
logic.state.countryName = result['countryName'];
|
||||||
),
|
logic.update();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '姓名'.tr,
|
leftTitel: '姓名'.tr,
|
||||||
rightTitle: '',
|
rightTitle: '',
|
||||||
@ -589,6 +594,9 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
|
|||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
|
fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
|
||||||
|
onChanged: (String value) {
|
||||||
|
logic.update();
|
||||||
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|||||||
@ -4,8 +4,12 @@ import 'package:get/get.dart';
|
|||||||
import 'package:star_lock/tools/dateTool.dart';
|
import 'package:star_lock/tools/dateTool.dart';
|
||||||
|
|
||||||
class SendElectronicKeyViewState {
|
class SendElectronicKeyViewState {
|
||||||
|
//循环
|
||||||
|
|
||||||
TextEditingController emailOrPhoneController =
|
TextEditingController emailOrPhoneController =
|
||||||
TextEditingController(); //邮箱/手机号输入框
|
TextEditingController(); //邮箱/手机号输入框
|
||||||
|
// 监听输入框变化
|
||||||
|
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||||
TextEditingController keyNameController = TextEditingController(); //钥匙名输入框
|
TextEditingController keyNameController = TextEditingController(); //钥匙名输入框
|
||||||
TextEditingController realNameController = TextEditingController(); //真实姓名输入框
|
TextEditingController realNameController = TextEditingController(); //真实姓名输入框
|
||||||
TextEditingController idCardController = TextEditingController(); //身份证号输入框
|
TextEditingController idCardController = TextEditingController(); //身份证号输入框
|
||||||
@ -37,5 +41,5 @@ class SendElectronicKeyViewState {
|
|||||||
final String timeLimitTips = '接收者在有效期内可以不限次数使用'.tr; //限时
|
final String timeLimitTips = '接收者在有效期内可以不限次数使用'.tr; //限时
|
||||||
final String permanentTips = '接收者可以使用此App开关锁'.tr; //永久
|
final String permanentTips = '接收者可以使用此App开关锁'.tr; //永久
|
||||||
final String onceLimitTips = '单次钥匙有效期为1小时,只能使用一次'.tr; //单次
|
final String onceLimitTips = '单次钥匙有效期为1小时,只能使用一次'.tr; //单次
|
||||||
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr; //循环
|
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user