import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:star_lock/blue/io_protocol/io_getPrivateKey.dart'; import 'package:star_lock/blue/io_protocol/io_getPublicKey.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../appRouters.dart'; import '../../../blue/blue_manage.dart'; import '../../../blue/io_protocol/io_addUser.dart'; import '../../../blue/io_reply.dart'; import '../../../blue/io_tool/io_manager.dart'; import '../../../blue/io_tool/io_model.dart'; import '../../../blue/io_tool/io_tool.dart'; import '../../../blue/io_tool/manager_event_bus.dart'; import '../../../blue/sender_manage.dart'; import '../../../tools/storage.dart'; import 'nearbyLock_state.dart'; class NearbyLockLogic extends BaseGetXController{ final NearbyLockState state = NearbyLockState(); // 点击连接设备 void connect(String lockId, String deviceName){ BlueManage().connect(lockId, deviceName, isFrist: true); } // 获取解析后的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { _replySubscription = EventBusManager().eventBus!.on().listen((reply) { if(reply is GetPublicKeyReply) { _replyGetPublicKey(reply); } if(reply is GetPrivateKeyReply) { _replyGetPrivateKeyKey(reply); } }); } void _replyGetPublicKey(Reply reply){ // 获取公钥 switch(reply.status){ case 0x00: //成功 print("获取公钥成功"); // 储存公钥 var tokenData = reply.data.sublist(3); var saveStrList = changeIntListToStringList(tokenData); Storage.setStringList(saveBluePublicKey, saveStrList); IoSenderManage.getPrivateKey( lockId:BlueManage().connectDeviceName, keyID:"1", authUserID:"1", nowTime:1, publicKeyData:tokenData, needAuthor:1); break; case 0x07: //无权限 print("获取公钥无权限"); break; case 0x0f: //用户已存在 print("获取公钥用户已存在"); break; default: //失败 print("获取公钥失败"); break; } } Future _replyGetPrivateKeyKey(Reply reply) async { switch(reply.status){ case 0x00: //成功 print('获取私钥成功'); reply.data.removeAt(0); // 私钥 List privateKey = reply.data.sublist(0, 16); var savePrivateKeyList = changeIntListToStringList(privateKey); Storage.setStringList(saveBluePrivateKey, savePrivateKeyList); // signKey List signKey = reply.data.sublist(16, 32); var saveSignKeyList = changeIntListToStringList(signKey); Storage.setStringList(saveBlueSignKey, saveSignKeyList); Get.toNamed(Routers.lockAddressPage); break; case 0x07: //无权限 print('获取私钥无权限'); break; case 0x0f: //用户已存在 print('获取私钥:用户已存在'); break; default: //失败 print('获取私钥失败'); break; } } @override void onReady() { // TODO: implement onReady super.onReady(); print("onReady()"); _initReplySubscription(); } @override void onInit() { // TODO: implement onInit super.onInit(); print("onInit()"); // 进来第一步开始扫描 BlueManage().startScan((v){ state.devices.clear(); state.devices.addAll(v); }); } @override void onClose() { // TODO: implement onClose super.onClose(); _replySubscription.cancel(); } }