app-starlock/lib/tools/baseGetXController.dart

262 lines
7.5 KiB
Dart
Raw Permalink Normal View History

2023-07-29 09:25:21 +08:00
import 'dart:async';
import 'dart:io';
2023-07-29 09:25:21 +08:00
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
2023-07-29 09:25:21 +08:00
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
2024-04-26 15:38:59 +08:00
import 'package:star_lock/app_settings/app_settings.dart';
2024-01-23 18:37:03 +08:00
import 'package:star_lock/blue/blue_manage.dart';
import 'package:system_settings/system_settings.dart';
import 'package:url_launcher/url_launcher.dart';
2023-07-29 09:25:21 +08:00
import '../common/XSConstantMacro/XSConstantMacro.dart';
import '../main/lockMian/lockMain/lockMain_logic.dart';
import 'NativeInteractionTool.dart';
import 'commonDataManage.dart';
2024-04-01 16:21:46 +08:00
import 'dateTool.dart';
2023-07-29 09:25:21 +08:00
import 'manager/client_manager.dart';
import 'showIosTipView.dart';
2023-07-29 09:25:21 +08:00
class BaseGetXController extends GetxController {
2023-07-29 09:25:21 +08:00
int currentTimeSeconds = 0;
bool currentPage = true;
2024-08-19 15:24:14 +08:00
int pageNo = 1;
String pageSize = '20';
2023-07-29 09:25:21 +08:00
@override
void onReady() {
super.onReady();
currentPage = true;
}
@override
InternalFinalCallback<void> get onDelete => super.onDelete;
@override
InternalFinalCallback<void> get onStart => super.onStart;
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
currentPage = false;
}
Future delay({Duration? duration, Function? something}) => Future.delayed(
duration ?? 500.milliseconds, something as FutureOr Function()?);
2023-07-29 09:25:21 +08:00
void showEasyLoading() => EasyLoading.show();
void dismissEasyLoading() {
if (EasyLoading.isShow) {
EasyLoading.dismiss();
}
}
2023-07-29 09:25:21 +08:00
void showTitleEasyLoading(String showContent) =>
EasyLoading.show(status: showContent);
Timer? _timer;
// CancelableOperation? _operation;
void showBlueConnetctToastTimer(
{bool isShowBlueConnetctToast = true,
int outTimer = 15,
Function? action}) {
if (_timer != null && _timer!.isActive) {
_timer!.cancel();
_timer = null;
}
2024-08-19 15:24:14 +08:00
_timer = Timer.periodic(outTimer.seconds, (Timer timer) {
if (action != null) {
action();
}
cancelBlueConnetctToastTimer();
if (isShowBlueConnetctToast == true) {
showBlueConnetctToast();
}
});
}
void cancelBlueConnetctToastTimer() {
2024-04-26 15:38:59 +08:00
// AppLog.log('超过15秒未响应APP主动关菊花断开连接');
if (_timer != null && _timer!.isActive) {
_timer!.cancel();
_timer = null;
}
}
2024-01-02 18:03:50 +08:00
void showBlueConnetctToast() {
showToast(
"${'操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。'.tr}${CommonDataManage().currentKeyInfo.lockFeature?.isNoSupportedBlueBroadcast == 1 ? "如果是全自动锁,请使屏幕变亮".tr : ""}");
2024-01-02 18:03:50 +08:00
}
void showToast(String status,
{Function? something,
EasyLoadingMaskType maskType = EasyLoadingMaskType.none}) {
EasyLoading.showToast(status,
duration: 2000.milliseconds, maskType: maskType);
if (something != null) {
delay(duration: 2100.milliseconds, something: something);
2023-07-29 09:25:21 +08:00
}
}
void showError(String status, {Function? something}) {
EasyLoading.showError(status, duration: 2000.milliseconds);
if (something != null) {
delay(duration: 2100.milliseconds, something: something);
2023-07-29 09:25:21 +08:00
}
}
void showSuccess(String status, {Function? something}) {
EasyLoading.showSuccess(status, duration: 1500.milliseconds);
if (something != null) {
delay(duration: 2000.milliseconds, something: something);
2023-07-29 09:25:21 +08:00
}
}
void showOperationSuccessful({String? status, Function? something}) =>
2024-08-19 15:24:14 +08:00
showSuccess(status ?? '成功'.tr, something: something);
void showOperationFailed({String? status, Function? something}) =>
2024-08-19 15:24:14 +08:00
showError(status ?? '失败'.tr, something: something);
2023-07-29 09:25:21 +08:00
void logOff() async {
await ClientManager().logOff();
Get.offAllNamed(Routers.starLockLoginPage);
}
2024-08-19 15:24:14 +08:00
// void checkBlueIsOpen(void Function() action) {
// NativeInteractionTool().sendGetBlueStatus();
// NativeInteractionTool().receiveChannelBlueIsOnEvent((String status) {
// if (status == '1') {
// // 蓝牙已打开
// // AppLog.log('蓝牙已打开');
// action();
// } else if (status == '0') {
// // 蓝牙未打开
// // AppLog.log('蓝牙未打开');
// showIosTipViewDialog();
// return;
// } else {
// // 蓝牙未打开
// // AppLog.log('设备不支持蓝牙');
// showToast('设备不支持蓝牙');
// return;
// }
// });
// }
void showIosTipViewDialog() {
showDialog(
context: Get.context!,
builder: (BuildContext context) {
return ShowIosTipView(
2024-08-05 09:57:16 +08:00
title: '提示'.tr,
tipTitle: '蓝牙未打开,请到设置里面打开蓝牙'.tr,
sureClick: () {
Get.back();
if (Platform.isIOS) {
launch('App-Prefs:');
} else {
SystemSettings.system();
}
},
cancelClick: () {
Get.back();
},
);
});
}
/// 判断网络是否连接
Future<bool> isConnected() async {
final List<ConnectivityResult> connectResults =
await Connectivity().checkConnectivity();
return !connectResults.contains(ConnectivityResult.none);
}
String getUseKeyTypeStr(int? startDate, int? endDate, int? keyType) {
String useDateStr = '';
if (keyType == XSConstantMacro.keyTypeTime) {
//限期
useDateStr =
"${DateTool().dateToYMDHNString(startDate.toString())}-${DateTool().dateToYMDHNString(endDate.toString())} ${"限时".tr}";
} else if (keyType == XSConstantMacro.keyTypeLong) {
//永久
useDateStr = '永久'.tr;
} else if (keyType == XSConstantMacro.keyTypeOnce) {
//单次
useDateStr = '单次'.tr;
} else if (keyType == XSConstantMacro.keyTypeLoop) {
//循环
useDateStr =
"${DateTool().dateToYMDString(startDate.toString())}-${DateTool().dateToYMDString(endDate.toString())} ${"循环".tr}";
}
return useDateStr;
}
2023-09-28 18:05:23 +08:00
List<String> getUseKeyTypeListStr(
int? startDate, int? endDate, int? keyType) {
final List<String> useDateListStr = <String>[];
if (keyType == XSConstantMacro.keyTypeTime) {
//限期
useDateListStr.addAll(<String>[
DateTool().dateToYMDHNString(startDate.toString()),
DateTool().dateToYMDHNString(endDate.toString()),
'限时'.tr,
]);
} else if (keyType == XSConstantMacro.keyTypeLong) {
//永久
useDateListStr.add('永久'.tr);
} else if (keyType == XSConstantMacro.keyTypeOnce) {
//单次
useDateListStr.add('单次'.tr);
} else if (keyType == XSConstantMacro.keyTypeLoop) {
//循环
useDateListStr.addAll(<String>[
DateTool().dateToYMDString(startDate.toString()),
DateTool().dateToYMDString(endDate.toString()),
'循环'.tr,
]);
}
return useDateListStr;
}
2023-09-28 18:05:23 +08:00
static List splitList(List list, int len) {
if (len <= 1) {
return [list];
}
List result = [];
int index = 1;
while (true) {
if (index * len < list.length) {
List temp = list.skip((index - 1) * len).take(len).toList();
result.add(temp);
index++;
continue;
}
List temp = list.skip((index - 1) * len).toList();
result.add(temp);
break;
}
return result;
}
2023-07-29 09:25:21 +08:00
}
///Extension_Int
extension Extension_Int on int {
2023-07-29 18:33:48 +08:00
bool get codeIsSuccessful => this == 0;
2023-07-29 09:25:21 +08:00
bool get msgCodeIsSuccessful => this == 1;
}