import 'dart:async'; import 'dart:math'; import 'package:date_format/date_format.dart'; import 'package:flutter/material.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:rxdart/rxdart.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/blue/blue_manage.dart'; import 'package:star_lock/blue/io_tool/io_tool.dart'; import 'package:star_lock/blue/sender_manage.dart'; import 'package:star_lock/debug/log.dart'; import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/storage.dart'; class DebugConsoleController { final List logs; final _streamController = BehaviorSubject>(); DebugConsoleController({List? logs}) : logs = logs ?? []; Stream> get stream => _streamController.stream; void close() => _streamController.close(); void notifyUpdate() => _streamController.add(logs); void log( Object? message, { DebugConsoleLevel level = DebugConsoleLevel.normal, DateTime? timestamp, StackTrace? stackTrace, }) { logs.add(DebugConsoleLog( message: message, level: level, timestamp: timestamp, stackTrace: stackTrace, )); notifyUpdate(); } List getLogsByLevel(DebugConsoleLevel level) { return logs.where((log) => log.level == level).toList(); } void clear() { logs.clear(); notifyUpdate(); } void showMore(BuildContext context) { showBottomSheet( context: context, builder: (context) { return Container( decoration: BoxDecoration( color: Colors.white, border: Border.all(width: 1, color: AppColors.btnDisableColor), borderRadius: BorderRadius.circular(30.w), ), height: Get.height * 0.7, width: Get.width, padding: EdgeInsets.all(16.w), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text('辅助测试的按钮'), SizedBox( height: 25.h, ), Expanded( child: Wrap( children: [ ElevatedButton( onPressed: () { EasyLoading.show(); randomlyCreate32Users(0, 33) .then((value) => EasyLoading.dismiss()) .catchError(EasyLoading.dismiss); }, child: const Text('给锁设备创建 32个用户')), ], ), ), ], ), ); }); } //随机创建 32个用户 Future randomlyCreate32Users(int count, int max) async { if (count >= max) { return; } BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); var token = await Storage.getStringList(saveBlueToken); List tokenList = changeStringListToIntList(token!); LockListInfoItemEntity currentKeyInfo = CommonDataManage().currentKeyInfo; DateTime startTime = DateTime.fromMillisecondsSinceEpoch( currentKeyInfo.startDate! ~/ 1000); DateTime endTime = DateTime.fromMillisecondsSinceEpoch( currentKeyInfo.endDate! ~/ 1000); IoSenderManage.senderAddUser( lockID: BlueManage().connectDeviceName, authUserID: CommonDataManage().currentKeyInfo.senderUserId!.toString(), keyID: CommonDataManage().currentKeyInfo.keyId.toString(), userID: generateRandomString(6), openMode: 1, keyType: 0, startDate: CommonDataManage().currentKeyInfo.startDate! ~/ 1000, expireDate: CommonDataManage().currentKeyInfo.endDate! ~/ 1000, useCountLimit: 0xFFFF, isRound: currentKeyInfo.keyType == 2 ? 1 : 0, weekRound: DateTool().accordingTheCycleIntoTheCorrespondingNumber( currentKeyInfo.weekDays!), startHour: startTime.hour, startMin: startTime.minute, endHour: endTime.hour, endMin: endTime.minute, role: CommonDataManage().currentKeyInfo.keyRight == 1 ? 1 : 0, password: "123456", needAuthor: 1, publicKey: publicKeyDataList, privateKey: getPrivateKeyList, token: tokenList); } }); await Future.delayed(const Duration(seconds: 2)); count++; await randomlyCreate32Users(count, max); } //创建指定的随机字符串 String generateRandomString(int length) { const chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; final random = Random(); return List.generate(length, (index) => chars[random.nextInt(chars.length)]) .join(); } }