FlutterBlue和FlutterBluePlus插件如何使用 以上是修改后的标题

我在使用Flutter开发蓝牙应用时遇到了问题,想请教大家关于FlutterBlue和FlutterBluePlus插件的具体使用方法。这两个插件有什么区别?哪个更适合商业项目使用?能否提供一些基础代码示例来说明如何实现设备扫描、连接和数据传输功能?另外在使用过程中有哪些常见坑需要注意?谢谢!

2 回复

FlutterBluePlus是FlutterBlue的升级版,用于蓝牙开发。安装插件后,在代码中导入包,初始化实例,扫描设备,连接并读写特征值。注意权限和兼容性。

更多关于FlutterBlue和FlutterBluePlus插件如何使用 以上是修改后的标题的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


FlutterBlue 和 FlutterBluePlus 是 Flutter 中用于蓝牙低功耗(BLE)通信的插件。FlutterBluePlus 是 FlutterBlue 的升级版本,修复了问题并增加了功能。以下是基本使用步骤:

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. 基本使用

扫描设备

FlutterBluePlus.startScan(timeout: Duration(seconds: 10));
var subscription = FlutterBluePlus.scanResults.listen((results) {
  for (var result in results) {
    print('发现设备: ${result.device.name},信号: ${result.rssi}');
  }
});

连接设备

BluetoothDevice device = ... // 从扫描结果获取
await device.connect();
print("已连接");

发现服务与特征

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

读写数据

BluetoothCharacteristic char = ... // 获取特征
List<int> value = await char.read();
await char.write([0x01, 0x02]);

断开连接

await device.disconnect();

4. 注意事项

  • 在真实设备上测试,模拟器不支持蓝牙。
  • 处理权限请求(Android 需要动态申请位置权限)。
  • 使用后及时取消监听和断开连接。

FlutterBluePlus 用法类似,但 API 更稳定。建议查看官方文档获取详细示例和更新信息。

回到顶部