flutter如何连接蓝牙设备
在Flutter中如何连接蓝牙设备?我尝试使用flutter_blue插件,但发现文档不太清晰,不知道如何扫描设备并建立连接。具体流程应该是怎样的?是否需要额外的权限配置?在Android和iOS平台上的实现方式是否有差异?求有经验的大佬分享完整代码示例和常见问题解决方案。
2 回复
Flutter连接蓝牙设备可使用flutter_blue插件。步骤:
- 添加依赖到pubspec.yaml
- 申请蓝牙权限
- 扫描设备
- 连接并通信
注意:iOS需在Info.plist添加蓝牙使用描述,Android需位置权限。
更多关于flutter如何连接蓝牙设备的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中连接蓝牙设备,主要使用 flutter_blue_plus 库(推荐,支持多平台)或 flutter_blue(旧版)。以下是使用 flutter_blue_plus 的步骤和示例代码:
步骤:
-
添加依赖:在
pubspec.yaml中添加:dependencies: flutter_blue_plus: ^1.0.0运行
flutter pub get。 -
配置权限(Android/iOS):
- 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>
- Android:在
-
代码实现:
- 扫描设备:
FlutterBluePlus.startScan(timeout: Duration(seconds: 10)); var subscription = FlutterBluePlus.scanResults.listen((results) { for (ScanResult r in results) { print('发现设备: ${r.device.name} - ${r.device.remoteId}'); } }); - 连接设备:
BluetoothDevice device = ...; // 从扫描结果获取设备 await device.connect(); print("已连接"); - 发现服务与特征:
List<BluetoothService> services = await device.discoverServices(); for (var service in services) { for (var characteristic in service.characteristics) { // 读取或写入特征值 } } - 断开连接:
await device.disconnect();
- 扫描设备:
注意事项:
- 在真实设备上测试,模拟器不支持蓝牙。
- 处理连接状态变化(如监听
device.connectionState)。 - 读写数据前确保特征支持对应操作(如 read/write/notify)。
通过以上步骤,即可实现蓝牙设备的扫描、连接及数据交互。

