Flutter集成系统服务插件witsystem_flutter_sdk_v2的使用

Flutter集成系统服务插件witsystem_flutter_sdk_v2的使用

详细的文档地址

https://www.showdoc.com.cn/p/eb9cc60b3dfda2b959af5c165dce218b

Getting Started

本项目是一个用于Flutter的插件包,包含针对Android和/或iOS平台的特定实现代码。

对于Flutter开发的帮助,可以查看在线文档,其中包含教程、示例、移动开发指南和完整的API参考。

详细的文档地址:

https://www.showdoc.com.cn/p/eb9cc60b3dfda2b959af5c165dce218b


完整示例代码

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/api/callBack/AddBleScanCall.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/api/callBack/BleDeviceCall.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/api/parameter/BleConnectStateChange.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/api/parameter/DeviceStatusInfo.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/api/parameter/Hardware.dart';
import 'dart:async';

import 'package:witsystem_flutter_sdk_v2/SDK/config/WitsystemSDKConfig.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/modles/DeviceUser.dart';
import 'package:witsystem_flutter_sdk_v2/SDK/sdk/SDK.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  StreamSubscription<BleConnectStateChange>? subscription;

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
    String RSAPrivateKey = "-----BEGIN PRIVATE KEY-----Bv6MSqpWxxxxxxxxxxxx0kX2DJBOZ/W+lA=-----END PRIVATE KEY-----";
    String token = "exxxxxxxxxxjLF-H1L8E";
    WitsystemSDKConfig config =  WitsystemSDKConfig(
        appId: "wsf9f1xxx",
        appSecret: "xxxxxxx",
        token: token,
        AESKey: "xxxxxxxxxxxx",
        RSAPrivateKey: RSAPrivateKey);
    SDK().initSDK(config).then((value) {
      print("初始化成功");
      print(value);
    }).onError((error, stackTrace) {
      print("初始化失败");
      print(error);
    });
  }

  Future<void> initPlatformState() async {
    if (!mounted) return;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: const Text('链接'),
          ),
          body: Column(
            children: [
              Row(children: [
                TextButton(
                  child: Text("连接"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.connect("Slock383B2694236F", true).then((value) {
                        print("连接成功>>>>>>>");
                      }).onError((error, stackTrace) {
                        print("连接失败>>>>>>.");
                        print(error);
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败");
                      print(error);
                    });
                  },
                ),
                TextButton(
                  child: Text("开门"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.unlock().then((value) {
                        print("开门成功");
                        print(value);
                      }).onError((error, stackTrace) {
                        print("开门失败");
                        print(error);
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败");
                      print(error);
                    });
                  },
                ),
                TextButton(
                  child: Text("断开"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.disconnect().then((value) {
                        print("断开成功???");
                      }).onError((error, stackTrace) {
                        print("断开失败??");
                        print(error);
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败");
                      print(error);
                    });
                  },
                ),
              ]),

              Row(children: [
                TextButton(
                  child: Text("添加管理员密码"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      print("获取对象成功");
                      print(value);
                      value?.addAdminPassword("123456").then((value) {
                        print("添加成功");
                      }).onError((error, stackTrace) {
                        print("添加失败");
                        print(error);
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败");
                      print(error);
                    });
                  },
                ),
                TextButton(
                  child: Text("添加卡"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      print("获取对象成功");
                      print(value);
                      value?.addAdminCard().then((value) {
                        print("添加卡成功");
                      }).onError((error, stackTrace) {
                        print("添加卡失败");
                        print(error);
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败");
                      print(error);
                    });
                  },
                ),
                TextButton(
                  child: Text("添加指纹"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      var bleDeviceCall =
                      BleDeviceCall<String>(success: (String uid) {
                        // 处理成功回调
                        print("添加指纹成功$uid");
                      }, fail: (error) {
                        print("添加指纹失败$error");
                      }, markProgress: (overall, current) {
                        print("添加指纹进度$overall:::$current");
                      });

                      value?.addAdminMark(bleDeviceCall);
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
              ]),


              Row(children: [
                TextButton(
                  child: Text("检查升级"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.checkFirmwareUpdates().then((value1) {
                        print("检查升级返回的对象${value1?.toMap()}");

                        value?.upgradeFirmware(
                            firmwareUpdate: value1!,
                            call: BleDeviceCall<String>(success: (version) {
                              print("升级固件成功$version");
                            }, fail: (error) {
                              print("升级固件失败$error");
                            }, otaProgress: (c) {
                              print("升级固件进度:$c");
                            }));
                      }).onError((error, stackTrace) {
                        print("检查升级失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
                TextButton(
                  child: Text("监听连接状态"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      subscription = value
                          ?.connectChange()
                          .listen((BleConnectStateChange event) {
                        print(
                            "首页监听》》》》》》》》监听对象${event.deviceId}:::${event.status}");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
                TextButton(
                  child: Text("取消监听连接"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.cancelConnectChange(subscription);
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
              ]),

              Row(children: [
                TextButton(
                  child: Text("扫描添加的设备"),
                  onPressed: () {
                    bool isAdd=false;
                    SDK().getAddBleDevice().then((value) {
                      value?.scan(AddBleScanCall(scanResult:
                          (String deviceId, int rssi, List<int> data) {
                        print("扫描到的设备$deviceId :: $rssi:::$data");
                        value.stopScan();
                        if(!isAdd){
                          isAdd=true;
                          value.add(deviceId: deviceId, deviceName: "flutter 测试")
                              .then((value) {
                            print("添加成功${value.device?.deviceId}");
                          }).onError((error, stackTrace) {
                            print("添加失败$error");
                          });
                        }

                      }, fail: (PlatformException error) {
                        print("扫描设备识别$error");
                      }));
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
                TextButton(
                  child: Text("停止扫描添加设备"),
                  onPressed: () {
                    SDK().getAddBleDevice().then((value) {
                      value?.stopScan();
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
              ]),


              Row(children: [
                TextButton(
                  child: Text("获得设备列表"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.deviceList().then((List<DeviceUser> value) {
                        for (var value1 in value) {
                          print("获取设备列表成功${value1.deviceName}");
                        }
                      }).onError((error, stackTrace) {
                        print("获取设备列表失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("设备支持的功能列表"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.supportedHardwareList("Slock383B2694236F").then((value){
                        for (var value1 in value) {
                          print("获得功能列表成功$value1");
                        }
                      }).onError((error, stackTrace) {
                        print("获得功能列表失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),

                TextButton(
                  child: Text("刷新"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.refreshDevice("Slock383B2694236F").then((value){
                        print("刷新设备成功$value");
                      }).onError((error, stackTrace) {
                        print("刷新设备失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),


              ],),

              Row(children: [
                TextButton(
                  child: Text("是否支持"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.isSupportedHardware("Slock383B2694236F",Hardware.ble).then((value){
                        print("是否支持$value");
                      }).onError((error, stackTrace) {
                        print("是否支持$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("是否连接"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.isConnect().then((value){
                        print("是否已经连接$value");
                      }).onError((error, stackTrace) {
                        print("是否已经连接$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),

                TextButton(
                  child: Text("读取设备状态"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.readDeviceStatus().then((value){
                        print("读取设备状态${value?.toMap()}");
                      }).onError((error, stackTrace) {
                        print("读取设备状态失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("设备支持的功能"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.deviceFunctionInfo("Slock383B2694236F").then((value){
                        print("设备支持的功能${value?.passwordType}");
                      }).onError((error, stackTrace) {
                        print("设备支持的功能失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),
              ],),

              Row(children: [
                TextButton(
                  child: Text("修改音量"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.readDeviceStatus().then((DeviceStatusInfo? state){
                        state?.volume=7;
                        value.updateDeviceStatus(state!).then((value) {
                          print("修改音量成功$value");
                        }).onError((error, stackTrace){
                          print("修改音量失败$error");
                        });

                      }).onError((error, stackTrace) {
                        print("修改音量失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获取对象失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("读取设备日志"),
                  onPressed: () {
                    SDK().getBleDevice().then((value) {
                      value?.readDeviceRecord().then(( list){
                        print("读取设备日志${list?.length}");
                      }).onError((error, stackTrace) {
                        print("读取设备日志失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("读取设备日志失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("获得指定设备信息"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.getDeviceInfo("Slock383B2694236F").then(( list){
                        print("获得指定设备信息${list}");
                      }).onError((error, stackTrace) {
                        print("获得指定设备信息失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获得指定设备信息失败$error");
                    });
                  },
                ),


                TextButton(
                  child: Text("获得当前状态"),
                  onPressed: () {
                    SDK().getDeviceManage().then((value) {
                      value?.getDeviceStatus("Slock383B2694236F").then(( list){
                        print("获得当前状态${list}");
                      }).onError((error, stackTrace) {
                        print("获得当前状态失败$error");
                      });
                    }).onError((error, stackTrace) {
                      print("获得当前状态失败$error");
                    });
                  },
                ),
              ],)
            ],
          )),
    );
  }
}

更多关于Flutter集成系统服务插件witsystem_flutter_sdk_v2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成系统服务插件witsystem_flutter_sdk_v2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


witsystem_flutter_sdk_v2 是一个用于 Flutter 应用程序的系统服务插件,通常用于与特定的硬件或系统服务进行交互。为了在你的 Flutter 项目中集成和使用这个插件,你需要按照以下步骤进行操作。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 witsystem_flutter_sdk_v2 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  witsystem_flutter_sdk_v2: ^版本号

^版本号 替换为你想要使用的插件版本。你可以通过 pub.dev 查找最新的版本号。

2. 安装依赖

在终端中运行以下命令来安装依赖:

flutter pub get

3. 导入插件

在你的 Dart 代码中导入插件:

import 'package:witsystem_flutter_sdk_v2/witsystem_flutter_sdk_v2.dart';

4. 初始化插件

在使用插件之前,通常需要进行初始化。这可能包括设置 API 密钥、配置参数等。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  await WitsystemFlutterSdkV2.initialize(
    apiKey: 'YOUR_API_KEY',
    // 其他配置参数
  );

  runApp(MyApp());
}

5. 使用插件功能

根据插件的文档,你可以调用其提供的各种方法来与系统服务进行交互。以下是一个简单的示例:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Witsystem SDK Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 调用插件的方法
              var result = await WitsystemFlutterSdkV2.someMethod();
              print('Result: $result');
            },
            child: Text('Call SDK Method'),
          ),
        ),
      ),
    );
  }
}

6. 处理权限

如果你的插件需要访问某些系统权限(如位置、存储等),你需要在 AndroidManifest.xmlInfo.plist 文件中添加相应的权限声明。

Android

android/app/src/main/AndroidManifest.xml 中添加:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

iOS

ios/Runner/Info.plist 中添加:

<key>NSLocationWhenInUseUsageDescription</key>
<string>我们需要访问您的位置以提供更好的服务。</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>我们需要访问您的相册以保存图片。</string>
回到顶部