flutter_blue_plus插件如何使用

我在使用flutter_blue_plus插件时遇到了一些问题,希望能得到帮助:

  1. 如何初始化并扫描附近的蓝牙设备?
  2. 连接蓝牙设备时总是失败,有没有完整的连接流程示例?
  3. 如何读取和写入蓝牙设备的特征值?
  4. 监听设备状态变化时,回调函数不触发是怎么回事?
  5. 有没有完整的示例代码可以参考?

插件文档看不太明白,希望有详细的使用教程或步骤说明。谢谢!

2 回复

使用flutter_blue_plus插件需先配置权限和依赖。初始化后,扫描设备、连接、发现服务并读写特征值。注意处理连接状态和错误。

更多关于flutter_blue_plus插件如何使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter_Blue_Plus 是 Flutter 中用于蓝牙低功耗(BLE)开发的插件,支持 Android 和 iOS。以下是基本使用步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  flutter_blue_plus: ^1.0.0

运行 flutter pub get

2. 配置权限

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

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

iOS
ios/Runner/Info.plist 中添加:

<dict>
  <key>NSBluetoothAlwaysUsageDescription</key>
  <string>需要蓝牙权限</string>
</dict>

3. 初始化与权限检查

import 'package:flutter_blue_plus/flutter_blue_plus.dart';

// 检查蓝牙是否开启
if (await FlutterBluePlus.isAvailable == false) {
  print("设备不支持蓝牙");
}

// 请求权限(Android 12+ 需要)
await FlutterBluePlus.requestPermissions();

4. 扫描设备

// 开始扫描
FlutterBluePlus.startScan(timeout: Duration(seconds: 10));

// 监听扫描结果
var subscription = FlutterBluePlus.scanResults.listen((results) {
  for (ScanResult result in results) {
    print("发现设备: ${result.device.localName} - ${result.device.remoteId}");
  }
});

// 停止扫描
FlutterBluePlus.stopScan();

5. 连接设备

// 通过 deviceId 连接
BluetoothDevice device = BluetoothDevice(remoteId: DeviceId("你的设备ID"));
await device.connect();
print("连接成功");

// 断开连接
await device.disconnect();

6. 发现服务与特征

List<BluetoothService> services = await device.discoverServices();
for (BluetoothService service in services) {
  for (BluetoothCharacteristic characteristic in service.characteristics) {
    print("特征 UUID: ${characteristic.uuid}");
  }
}

7. 读写数据

// 读取特征值
List<int> value = await characteristic.read();

// 写入数据
await characteristic.write([0x01, 0x02]);

// 监听通知(需先设置监听)
await characteristic.setNotifyValue(true);
characteristic.onValueReceived.listen((value) {
  print("收到数据: $value");
});

注意事项:

  • 在真实设备上测试(模拟器不支持蓝牙)。
  • 处理连接超时和异常。
  • 及时取消监听和释放资源。

通过以上步骤,你可以实现基本的 BLE 设备扫描、连接和数据交互功能。

回到顶部