Flutter如何使用blue_plus插件连接蓝牙设备
我在Flutter项目中使用blue_plus插件连接蓝牙设备时遇到问题。按照文档说明初始化插件后,调用扫描和连接方法总是返回失败。具体表现为:1. 调用startScan()后无法检测到任何设备;2. 尝试connect()时出现"GATT ERROR 133"错误。我已确保设备蓝牙已开启且处于可发现模式,手机权限也已全部授予。想请教:1. 是否需要额外配置AndroidManifest.xml?2. 如何正确处理连接失败的情况?3. 这个插件支持哪些蓝牙协议类型?希望能得到具体代码示例和常见问题解决方案。
2 回复
使用blue_plus插件连接蓝牙设备步骤:
- 添加依赖:
flutter pub add blue_plus - 请求权限:蓝牙和位置权限
- 扫描设备:
BluePlus.scan - 连接设备:
device.connect() - 发现服务:
device.discoverServices() - 读写特征值
记得处理连接状态和错误回调。
更多关于Flutter如何使用blue_plus插件连接蓝牙设备的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用blue_plus插件连接蓝牙设备,步骤如下:
- 添加依赖
在
pubspec.yaml中添加:
dependencies:
flutter_blue_plus: ^1.0.0
运行 flutter pub get
- 配置权限
- 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>
- 核心连接代码
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
// 扫描设备
void startScan() {
FlutterBluePlus.startScan(timeout: Duration(seconds: 10));
}
// 连接设备
Future<void> connectDevice(BluetoothDevice device) async {
await device.connect();
print("已连接: ${device.name}");
}
// 断开连接
void disconnectDevice(BluetoothDevice device) {
device.disconnect();
}
// 监听扫描结果
StreamBuilder<List<ScanResult>>(
stream: FlutterBluePlus.scanResults,
builder: (context, snapshot) {
// 显示设备列表
},
)
- 完整连接流程
- 检查蓝牙状态:
FlutterBluePlus.isAvailable - 开始扫描
- 选择目标设备
- 调用连接方法
- 处理连接状态:
device.connectionState.listen()
注意:
- 需要处理动态权限申请(Android 12+需要BLUETOOTH_CONNECT权限)
- iOS需要物理设备测试
- 连接前建议先停止扫描:
FlutterBluePlus.stopScan()

