Merge branch 'develop_sync_record' into 'release'

Develop sync record

See merge request StarlockTeam/app-starlock!98
This commit is contained in:
刘燕峰 2025-05-23 10:52:42 +00:00
commit d31dfd509e
5 changed files with 234 additions and 178 deletions

View File

@ -76,7 +76,6 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
Container(
width: 340.w,
height: 60.h,
// color: Colors.red,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(30.h)),
border:
@ -119,28 +118,22 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
child: Obx(
() => Container(
height: 60.h,
// color: Colors.red,
decoration: state.isIphoneType.value
? null
: BoxDecoration(
decoration: !state.isIphoneType.value
? BoxDecoration(
color: AppColors.mainColor,
borderRadius: BorderRadius.all(
Radius.circular(
30.h,
),
),
borderRadius:
BorderRadius.all(Radius.circular(30.h)),
border: Border.all(
width: 1.0,
color: AppColors.greyLineColor,
),
),
color: AppColors.greyLineColor))
: null,
child: Center(
child: Text(
'邮箱'.tr,
style: TextStyle(
color: state.isIphoneType.value
? Colors.black
: Colors.white,
color: !state.isIphoneType.value
? Colors.white
: Colors.black,
),
),
),

View File

@ -3,8 +3,11 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
class StarLockRegisterState {
StarLockRegisterState() {
// tab
final Locale? systemLocale = Get.deviceLocale;
isIphoneType.value = systemLocale?.languageCode == 'zh';
resetResend();
}
final TextEditingController phoneOrEmailController = TextEditingController();
@ -28,8 +31,13 @@ class StarLockRegisterState {
// bool get isEmail => RegexUtil.isEmail(phoneOrEmailStr.value);
// bool get isIphone => RegexUtil.isMobileSimple(phoneOrEmailStr.value);
bool get pwdIsOK => pwd.value.isNotEmpty && surePwd.value.isNotEmpty && pwd.value.length >= 8 && surePwd.value.length >= 8;
bool get codeIsOK => verificationCode.value.isNotEmpty && verificationCode.value.length >= 6 ;
bool get pwdIsOK =>
pwd.value.isNotEmpty &&
surePwd.value.isNotEmpty &&
pwd.value.length >= 8 &&
surePwd.value.length >= 8;
bool get codeIsOK =>
verificationCode.value.isNotEmpty && verificationCode.value.length >= 6;
RxBool canResend = false.obs; //
RxString btnText = ''.obs;
@ -39,9 +47,8 @@ class StarLockRegisterState {
void resetResend() {
canResend.value = totalSeconds == currentSecond;
btnText.value = !canResend.value
? '$currentSecond s'
: btnText.value = '获取验证码'.tr;
btnText.value =
!canResend.value ? '$currentSecond s' : btnText.value = '获取验证码'.tr;
}
void onClose() {

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -74,6 +73,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterXHJPage> {
height: 80.h,
child: DefaultTabController(
length: 2,
initialIndex: state.isIphoneType.value ? 0 : 1,
child: TabBar(
onTap: (int index) {
state.isIphoneType.value = index == 0;
@ -84,10 +84,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterXHJPage> {
}),
dividerHeight: 0,
indicatorSize: TabBarIndicatorSize.tab,
tabs: <Widget>[
Text('手机'.tr),
Text('邮箱'.tr)
],
tabs: <Widget>[Text('手机'.tr), Text('邮箱'.tr)],
indicatorColor: AppColors.mainColor,
labelStyle:
TextStyle(color: AppColors.mainColor, fontSize: 26.sp),
@ -259,8 +256,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterXHJPage> {
width: 20.w,
height: 20.w,
),
)
)),
))),
SizedBox(
width: 10.w,
),
@ -268,14 +264,12 @@ class _StarLockRegisterPageState extends State<StarLockRegisterXHJPage> {
child: RichText(
text: TextSpan(
text: '我已阅读并同意'.tr,
style:
TextStyle(color: const Color(0xff333333), fontSize: 20.sp),
style: TextStyle(color: const Color(0xff333333), fontSize: 20.sp),
children: <InlineSpan>[
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'用户协议'.tr}',
child: Text('${'用户协议'.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {
@ -289,8 +283,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterXHJPage> {
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'隐私政策'.tr}',
child: Text('${'隐私政策'.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {

View File

@ -405,6 +405,7 @@ class FingerprintListLogic extends BaseGetXController {
_teamEvent = eventBus
.on<OtherTypeRefreshListEvent>()
.listen((OtherTypeRefreshListEvent event) async {
//
await getFingerprintsListData(isRefresh: true);
});
}
@ -459,8 +460,10 @@ class FingerprintListLogic extends BaseGetXController {
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
_initReplySubscription();
_initRefreshAction();
// _initRefreshAction();
//
await getFingerprintsListData(isRefresh: true);
}
}

View File

@ -1,4 +1,3 @@
import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
@ -7,6 +6,8 @@ import 'package:star_lock/blue/io_protocol/io_updataLockRemoteControlList.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/commonDataManage.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/tools/storage.dart';
import '../../../../app_settings/app_settings.dart';
import '../../../../blue/blue_manage.dart';
@ -21,48 +22,56 @@ import '../../../../blue/io_tool/io_tool.dart';
import '../../../../blue/io_tool/manager_event_bus.dart';
import '../../../../blue/sender_manage.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/storage.dart';
import 'uploadData_state.dart';
class UploadDataLogic extends BaseGetXController {
UploadDataState state = UploadDataState();
final UploadDataState state = UploadDataState();
//
late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
//
if (reply is UpdataLockPasswordListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockPasswordListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockPasswordListReply(reply);
}
//
if (reply is UpdataLockCardListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockCardListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockCardListReply(reply);
}
//
if (reply is UpdataLockFingerprintListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockFingerprintListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockFingerprintListReply(reply);
}
//
if (reply is UpdataLockFaceListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockFaceListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockFaceListReply(reply);
}
//
if (reply is UpdataLockPalmVeinListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockPalmVeinListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockPalmVeinListReply(reply);
}
//
if (reply is UpdataLockRemoteControlListReply && (state.ifCurrentScreen.value == true)) {
if (reply is UpdataLockRemoteControlListReply &&
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockRemoteControlListReply(reply);
}
//
if (reply is UpdataLockSetReply && (state.ifCurrentScreen.value == true) && (state.ifSeletUpdataBtnState == true)) {
if (reply is UpdataLockSetReply &&
(state.ifCurrentScreen.value == true) &&
(state.ifSeletUpdataBtnState == true)) {
_replyUpdataLockSetReply(reply);
}
});
@ -77,7 +86,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadPasswordDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadPasswordDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadPasswordPage = state.uploadPasswordPage + 1;
@ -95,7 +105,10 @@ class UploadDataLogic extends BaseGetXController{
// }else{
// //
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:2, records:state.uploadPasswordDataList);
_lockDataUpload(
uploadType: 2,
recordType: 2,
records: state.uploadPasswordDataList);
// }
}
break;
@ -126,7 +139,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadCardDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadCardDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadCardPage = state.uploadCardPage + 1;
@ -143,7 +157,8 @@ class UploadDataLogic extends BaseGetXController{
// }else{
// //
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:3, records:state.uploadCardDataList);
_lockDataUpload(
uploadType: 2, recordType: 3, records: state.uploadCardDataList);
// }
}
break;
@ -173,7 +188,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadFingerprintDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadFingerprintDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadFingerprintPage = state.uploadFingerprintPage + 1;
@ -190,7 +206,10 @@ class UploadDataLogic extends BaseGetXController{
// }else{
// //
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:4, records:state.uploadFingerprintDataList);
_lockDataUpload(
uploadType: 2,
recordType: 4,
records: state.uploadFingerprintDataList);
// }
}
break;
@ -220,7 +239,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadFaceDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadFaceDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadFacePage = state.uploadFacePage + 1;
@ -237,7 +257,8 @@ class UploadDataLogic extends BaseGetXController{
// }else{
//
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:5, records:state.uploadFaceDataList);
_lockDataUpload(
uploadType: 2, recordType: 5, records: state.uploadFaceDataList);
// }
}
break;
@ -267,7 +288,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadPalmVeinDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadPalmVeinDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadPalmVeinPage = state.uploadPalmVeinPage + 1;
@ -284,7 +306,10 @@ class UploadDataLogic extends BaseGetXController{
// }else{
// //
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:6, records:state.uploadPalmVeinDataList);
_lockDataUpload(
uploadType: 2,
recordType: 6,
records: state.uploadPalmVeinDataList);
// }
}
break;
@ -314,7 +339,8 @@ class UploadDataLogic extends BaseGetXController{
cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8];
state.uploadRemoteControlDataList.addAll(reply.data.sublist(9, reply.data.length));
state.uploadRemoteControlDataList
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) {
// 10
state.uploadRemoteControlPage = state.uploadRemoteControlPage + 1;
@ -331,7 +357,10 @@ class UploadDataLogic extends BaseGetXController{
// }else{
// //
state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload(uploadType:2, recordType:7, records:state.uploadRemoteControlDataList);
_lockDataUpload(
uploadType: 2,
recordType: 7,
records: state.uploadRemoteControlDataList);
// }
}
break;
@ -361,8 +390,10 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = state.indexCount.value + 1;
cancelBlueConnetctToastTimer();
state.uploadLockSetDataList.addAll(reply.data.sublist(7, reply.data.length));
_lockDataUpload(uploadType:1, recordType:0, records:state.uploadLockSetDataList);
state.uploadLockSetDataList
.addAll(reply.data.sublist(7, reply.data.length));
_lockDataUpload(
uploadType: 1, recordType: 0, records: state.uploadLockSetDataList);
break;
case 0x06:
//
@ -394,7 +425,8 @@ class UploadDataLogic extends BaseGetXController{
AppLog.log('上传密码列表获取超时 关闭加载菊花');
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -414,7 +446,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockPasswordList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -428,8 +461,7 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
// Card列表
@ -440,7 +472,8 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -460,7 +493,8 @@ class UploadDataLogic extends BaseGetXController{
// Card列表
Future<void> updataLockCardList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -474,8 +508,7 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
@ -486,7 +519,8 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -506,7 +540,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockFingerprintList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -520,8 +555,7 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
@ -532,7 +566,8 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -552,7 +587,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockFaceList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -566,11 +602,9 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
Future<void> getUpdataLockPalmVeinList() async {
showEasyLoading();
@ -579,7 +613,8 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -599,7 +634,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockPalmVeinList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -613,8 +649,7 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
@ -625,12 +660,14 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
updataLockRemoteControlList(getTokenList, state.uploadRemoteControlPage);
updataLockRemoteControlList(
getTokenList, state.uploadRemoteControlPage);
} else if (connectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading();
cancelBlueConnetctToastTimer();
@ -645,7 +682,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockRemoteControlList(List<int> token, int page) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -659,8 +697,7 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
@ -671,7 +708,8 @@ class UploadDataLogic extends BaseGetXController{
state.indexCount.value = 0;
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -691,7 +729,8 @@ class UploadDataLogic extends BaseGetXController{
//
Future<void> updataLockSet(List<int> token) async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -703,23 +742,20 @@ class UploadDataLogic extends BaseGetXController{
token: token,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList
);
privateKey: getPrivateKeyList);
}
//
Future<void> _lockDataUpload({
required int uploadType,
Future<void> _lockDataUpload(
{required int uploadType,
required int recordType,
required List records
}) async{
required List records}) async {
final LoginEntity entity = await ApiRepository.to.lockDataUpload(
lockId: CommonDataManage().currentKeyInfo.lockId!,
uploadType: uploadType,
recordType: recordType,
records: records,
isUnShowLoading: false
);
isUnShowLoading: false);
if (entity.errorCode!.codeIsSuccessful) {
if (uploadType == 1) {
// 1
@ -768,6 +804,31 @@ class UploadDataLogic extends BaseGetXController{
}
}
//
void onUploadSuccess() {
//
eventBus.fire(OtherTypeRefreshListEvent());
//
Get.back();
}
//
Future<void> uploadData() async {
try {
// ... existing upload code ...
//
bool uploadSuccess = true; //
if (uploadSuccess) {
onUploadSuccess();
}
} catch (e) {
//
print('Upload failed: $e');
}
}
@override
void onReady() {
super.onReady();
@ -783,5 +844,4 @@ class UploadDataLogic extends BaseGetXController{
_replySubscription.cancel();
}
}