witsystem_device_plugin 0.4.8
witsystem_device_plugin: ^0.4.8 copied to clipboard
接入witsystem移动端SDK.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:witsystem_device_plugin/device/Ota.dart';
import 'package:witsystem_device_plugin/device/Unlock.dart';
import 'package:witsystem_device_plugin/device/BleDevice.dart';
import 'package:witsystem_device_plugin/device/AddDevice.dart';
import 'package:witsystem_device_plugin/device/DeviceManage.dart';
import 'package:witsystem_device_plugin/command/PasswordType.dart';
import 'package:witsystem_device_plugin/command/MarkType.dart';
import 'package:witsystem_device_plugin/command/CardType.dart';
import 'package:witsystem_device_plugin/witsystem_device_plugin.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
init();
}
init() async {
var millisecondsSinceEpoch = DateTime.now().millisecondsSinceEpoch;
var initSDK = await WitsystemDevicePlugin.instance.initSDK(
"smartf9f18d5fb2764825b74f81cac658b195",
"open6815e73b76e24f5481db36cddcc80a7d1610376044955",
"8aa03f987f6448bf931aa5284a79b26c",
"-----BEGIN PRIVATE KEY-----MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCQeyDGDOhzQbTpkcQ1hnuILAUadO7WgHjDSZSxwb3lTuyKe5OB2+nzkW1QV72Szg777JShj787j/zaKsyt7LExJCU50FQ8Dz6FL0rVgL60PZqAm+qiP56/5mH+zFfLfy4DC/PSZoSTsXbWB8HJJW2hLJlCx+CBQ4pRKBZMJBwBSp7GSBcrWpRB8Nus+S+koN6erA94faCtpUKSaH3TNkeQvoXfSapvNt+lEQzMd7UdTPoHAji8GAScYPBq+QFATDCdtrmjvz8bTIDbu3Nr/CzJ625DQt8QirP0dA45bBd6vidG/P7qknIr+mlBvIEqNpVmzkMPfT6zsb7Cn+vvZKrTAgMBAAECggEAc2noRE0LYwaZ/frzQc6r35tKeFfwcmkuDtI4dcbOat8hFX6h1ppVyLvjFssAJMV2MshJ8sVhfbMHyT9nQYhSA29cTVKd91w2FS4yGVs++7w6L4JdbD5mEeV3YpLZjzWJC+YAX5KFVXXt+As6QfQkHxwBUddY/+l0FGBxb2Fo/Z3q0uHxA9zPQ/9DW610MHs/i/KH6BZDBEvIXEePUVoBX7Or+kZ/xk2421anaiAfq/JSBZFiCa62AVfIossOaebywTz9nICez81uiJuEL0mYABw/jrDIdCM4ZeIHS8gm3mZxrIcup6C564o8z12nHCsBaKbZZMOOVJ1KTyAFI1I0AQKBgQDGBVQyPkSOlO42eN183NcLdMhjAXVjpaX+eE+WfyNBm7+DgW3fzdmlS23SlfRqSFjYP69KQNu/p5EeSyn1NGgg2xeW2F0FOEM/cXCbgEUOz3baQcmuM0wtU7FaaBG37J+J3/2SRgCpZYcl72UTF3N3TSqePcU6B2EtfuRAdVzZrQKBgQC6yLbZKWtdxQl+k/KfiyfKXZh3ceCYSQUmfOoPQ+lO6DfpGvOa/3+oT4wOFP1MVm4yF5TFqhjoFer/17tnK91ZbAL5rBi0LF1zEVzutsII9nHDXY9MOVp5cG+MKTgDW1rv7jsRB7O7kip1lS9q+VLvD2199KDsJOdDHujzILkmfwKBgDC3QOZ3cTBOrWgTRhIg1nrICUBqLHIOX48CFDpnHspWQcBdiCVmJCRJMUR8hbvb/pd822f+GtHErKvyO+lKMk/a9quyoPfWxpyGEPkAjny9R3UceDx1/EiubVRbg/hmqz0lMOHafPEvvBb2FTykKVDxWAnEEpBbHmot7IN7HBOlAoGAO7v69gJQCuH7wlZQToOzSv2ZyAFMQYeAtSlXtWATmh+b2dm7tIMncU1XTh2aUDKH9U8jTf+zDW4NBJsanMkjdficDvrhv6U8kZMo9FLQRQuDoGYocMkazSGPGvUHq9MohvjaPP0IluEM4SO/0WdBBaEadCCq4jp/FzEocLCzZcMCgYBOLGrgg+hnYZuA/9StPC4xWbKprfDElFiXclQXRjDK5jVovxkgx9IWODn3H+FWOX39uS0EMUlo6gQrGb+OrsLjwbabUu1Gb6lk4/H2j1NqdKQ4nHPkbIclm8la8peTnCecdn55q7VhwozhN8QJ0JgcOPHBoudhCIQvG4Xm/wbzFA==-----END PRIVATE KEY-----");
var millisecondsSinceEpoch2 = DateTime.now().millisecondsSinceEpoch;
print("初始化返回的<><><><><><><><><><><><>数据$initSDK ");
print(
"初始化返回的<><><><><><><><><><><><>数据${millisecondsSinceEpoch2 - millisecondsSinceEpoch} ");
print("设备列表${DeviceManage.instance.deviceList()} ");
print("设备列表${DeviceManage.instance.device("Slock383B26345B6A")} ");
}
late StreamSubscription listen;
bleUnlocks() async {
var microsecondsSinceEpoch = DateTime.now().millisecondsSinceEpoch;
// Unlock.instance.bleUnlocks(success: (map) {
// print("开门成功$map");
// }, foundMultipleDevices: (map) {
// print("发现附近有多个设备$map");
// }, fail: (e) {
// print("开启设备失败$e");
// });
//await DeviceManage().getDeviceSoftwareFunction("Slock383B26345B6A");
try {
var info = await Unlock.instance.bleUnlock("Slock383B26345B6A");
print("开门成功$info");
} catch (e) {
print("错误$e");
}
var microsecondsSinceEpoch2 = DateTime.now().millisecondsSinceEpoch;
print("开锁耗时${microsecondsSinceEpoch2 - microsecondsSinceEpoch}");
}
//扫描
scan() {
listen = AddDevice.instance.scanAddBleDevice().listen((event) {
print("扫描返回的信息$event");
});
listen.onError((err) {
var err2 = err as PlatformException;
print("异常信息${err2}");
listen.cancel();
});
}
stopScan() {
AddDevice.instance.stopAddBleDevice(listen);
}
addPwd() async {
try {
var addPassword = await BleDevice.instance.addPassword(
"Slock383B26345B6A",
PasswordType.ADMIN_PASSWORD,
"654321",
"flutter添加密码");
print("添加成功$addPassword");
} catch (e) {
print("错误信息${e as PlatformException}");
}
}
addCard() async {
try {
var addPassword = await BleDevice.instance
.addCard("Slock383B26345B6A", CardType.ADMIN_CARD, "flutter添加卡",
swingCard: () {
print("请刷卡");
});
print("添加成功$addPassword");
} catch (e) {
print("错误信息${e as PlatformException}");
}
}
addMark() async {
await BleDevice.instance
.addMark("Slock383B26345B6A", MarkType.ADMIN_MARK, "flutter添加指纹",
progress: (info) {
print("添加指纹进度$info>>>>>>>>>>>>>>>>>>>>>>首页");
}, sendSuccess: () {
print("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>首页");
})
.then((value) => print("添加成功"))
.onError((error, stackTrace) {
print("添加失败$error");
});
// BleDevice.instance.addMark("Slock383B26345B6A", MarkType.ADMIN_MARK, "flutter添加指纹").listen((event) {
// print("添加指纹返回$event");
//
// }).onError((err){
// print("添加指纹错误信息${err as PlatformException}");
// });
}
closeBleDevice() {
BleDevice.instance.closeBleDevice("Slock383B26345B6A");
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: ListView(
children: [
Center(
child: MaterialButton(
textColor: Colors.red,
child: const Text("开锁"),
onPressed: bleUnlocks,
),
),
MaterialButton(
onPressed: scan,
child: const Text("扫描可以添加的设备"),
),
MaterialButton(
onPressed: stopScan,
child: const Text("停止扫描附近设备"),
),
MaterialButton(
onPressed: addPwd,
child: const Text("添加密码123456"),
),
MaterialButton(
onPressed: () async {
await Ota().checkUpVersion("Slock383B26345B6A");
Ota().startBleOta(
deviceId: "Slock383B26345B6A",
progress: (v) {
print("升级进度$v");
});
},
child: const Text("ota升级"),
),
MaterialButton(
onPressed: () {
Ota().stopBleOta("Slock383B26345B6A");
},
child: const Text("ota停止升级"),
),
MaterialButton(
onPressed: addCard,
child: const Text("添加卡"),
),
MaterialButton(
onPressed: addMark,
child: const Text("添加指纹"),
),
MaterialButton(
onPressed: closeBleDevice,
child: const Text("断开设备蓝牙操作"),
),
MaterialButton(
onPressed: () async {
try {
// var dd = await BleDevice()
// .connectAndOpen("Slock383B26345B6A", true);
// var deviceSoftwareFunction = await DeviceManage.instance
// .getDeviceSoftwareFunction("Slock04EE033EABF4");
// print("返回的数据$deviceSoftwareFunction");
print(
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
var dd = await BleDevice.instance.connectAndOpen(
"Slock383B26345B6A", true,
isVibrate: true);
//var deviceSoftwareFunction = await DeviceManage.instance.getDeviceSoftwareFunction("Slock04EE033EABF4");
print("返回的数据$dd");
//DeviceManage.instance.getDeviceSoftwareFunction("Slock383B26345AFB");
} catch (e) {
print("收到的错误信息$e");
}
},
child: const Text("连接认证"),
),
MaterialButton(
onPressed: () async {
DeviceManage().refurbishAllDevice();
},
child: const Text("刷新设备"),
),
MaterialButton(
onPressed: () async {
DeviceManage().addDeviceChangeObserver(
(data) {
debugPrint("设备变化$data");
},
).onError((err) {});
},
child: const Text("监听设备变化"),
),
MaterialButton(
onPressed: () async {
DeviceManage().removeDeviceChangeObserver();
},
child: const Text("关闭监听设备变化"),
),
MaterialButton(
onPressed: () async {
BleDevice().bleDeviceConnectState(
(data) {
debugPrint("flutter监听到蓝牙连接变化$data");
},
).onError((err) {});
},
child: const Text("监听蓝牙连接变化"),
),
MaterialButton(
onPressed: () async {
BleDevice().cancelBleDeviceConnectState();
},
child: const Text("关闭监听蓝牙连接变化"),
),
MaterialButton(
onPressed: () async {
try {
var info = await DeviceManage()
.bindRelay("Slock383B26345B6A", "Slock383B26345B6A");
print("绑定成功$info");
} catch (e) {
print("绑定失败$e");
}
},
child: const Text("绑定网关"),
),
MaterialButton(
onPressed: () async {
var initSDK = await WitsystemDevicePlugin.instance.initSDK(
"smartf9f18d5fb2764825b74f81cac658b195",
"open6815e73b76e24f5481db36cddcc80a7d1610376044955",
"8aa03f987f6448bf931aa5284a79b26c",
"-----BEGIN PRIVATE KEY-----MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCQeyDGDOhzQbTpkcQ1hnuILAUadO7WgHjDSZSxwb3lTuyKe5OB2+nzkW1QV72Szg777JShj787j/zaKsyt7LExJCU50FQ8Dz6FL0rVgL60PZqAm+qiP56/5mH+zFfLfy4DC/PSZoSTsXbWB8HJJW2hLJlCx+CBQ4pRKBZMJBwBSp7GSBcrWpRB8Nus+S+koN6erA94faCtpUKSaH3TNkeQvoXfSapvNt+lEQzMd7UdTPoHAji8GAScYPBq+QFATDCdtrmjvz8bTIDbu3Nr/CzJ625DQt8QirP0dA45bBd6vidG/P7qknIr+mlBvIEqNpVmzkMPfT6zsb7Cn+vvZKrTAgMBAAECggEAc2noRE0LYwaZ/frzQc6r35tKeFfwcmkuDtI4dcbOat8hFX6h1ppVyLvjFssAJMV2MshJ8sVhfbMHyT9nQYhSA29cTVKd91w2FS4yGVs++7w6L4JdbD5mEeV3YpLZjzWJC+YAX5KFVXXt+As6QfQkHxwBUddY/+l0FGBxb2Fo/Z3q0uHxA9zPQ/9DW610MHs/i/KH6BZDBEvIXEePUVoBX7Or+kZ/xk2421anaiAfq/JSBZFiCa62AVfIossOaebywTz9nICez81uiJuEL0mYABw/jrDIdCM4ZeIHS8gm3mZxrIcup6C564o8z12nHCsBaKbZZMOOVJ1KTyAFI1I0AQKBgQDGBVQyPkSOlO42eN183NcLdMhjAXVjpaX+eE+WfyNBm7+DgW3fzdmlS23SlfRqSFjYP69KQNu/p5EeSyn1NGgg2xeW2F0FOEM/cXCbgEUOz3baQcmuM0wtU7FaaBG37J+J3/2SRgCpZYcl72UTF3N3TSqePcU6B2EtfuRAdVzZrQKBgQC6yLbZKWtdxQl+k/KfiyfKXZh3ceCYSQUmfOoPQ+lO6DfpGvOa/3+oT4wOFP1MVm4yF5TFqhjoFer/17tnK91ZbAL5rBi0LF1zEVzutsII9nHDXY9MOVp5cG+MKTgDW1rv7jsRB7O7kip1lS9q+VLvD2199KDsJOdDHujzILkmfwKBgDC3QOZ3cTBOrWgTRhIg1nrICUBqLHIOX48CFDpnHspWQcBdiCVmJCRJMUR8hbvb/pd822f+GtHErKvyO+lKMk/a9quyoPfWxpyGEPkAjny9R3UceDx1/EiubVRbg/hmqz0lMOHafPEvvBb2FTykKVDxWAnEEpBbHmot7IN7HBOlAoGAO7v69gJQCuH7wlZQToOzSv2ZyAFMQYeAtSlXtWATmh+b2dm7tIMncU1XTh2aUDKH9U8jTf+zDW4NBJsanMkjdficDvrhv6U8kZMo9FLQRQuDoGYocMkazSGPGvUHq9MohvjaPP0IluEM4SO/0WdBBaEadCCq4jp/FzEocLCzZcMCgYBOLGrgg+hnYZuA/9StPC4xWbKprfDElFiXclQXRjDK5jVovxkgx9IWODn3H+FWOX39uS0EMUlo6gQrGb+OrsLjwbabUu1Gb6lk4/H2j1NqdKQ4nHPkbIclm8la8peTnCecdn55q7VhwozhN8QJ0JgcOPHBoudhCIQvG4Xm/wbzFA==-----END PRIVATE KEY-----");
var device =
await DeviceManage.instance.device("Slock383B26345B6A");
print("初始化返回的<><><><><><><><><><><><>数据$device ");
},
child: const Text("初始化"),
),
MaterialButton(
onPressed: () async {
await WitsystemDevicePlugin.instance.uninitDevices();
print("取消初始化<><><><><><><><><><><><>数据 ");
},
child: const Text("取消初始化"),
),
MaterialButton(
onPressed: () async {
await Unlock.instance.scanUnlock((rssi, deviceId) {
print("扫描返回的信息>>>>>>>>>>>>>>${rssi.toString()} :: ${deviceId}");
});
},
child: const Text("扫描附近可以开启的设备"),
),
MaterialButton(
onPressed: () async {
await Unlock.instance.stopScanUnlock();
},
child: const Text("停止扫描附近可以开启的设备"),
),
],
),
),
);
}
}