Flutter如何使用blue_plus插件连接蓝牙设备

我在Flutter项目中使用blue_plus插件连接蓝牙设备时遇到问题。按照文档说明初始化插件后,调用扫描和连接方法总是返回失败。具体表现为:1. 调用startScan()后无法检测到任何设备;2. 尝试connect()时出现"GATT ERROR 133"错误。我已确保设备蓝牙已开启且处于可发现模式,手机权限也已全部授予。想请教:1. 是否需要额外配置AndroidManifest.xml?2. 如何正确处理连接失败的情况?3. 这个插件支持哪些蓝牙协议类型?希望能得到具体代码示例和常见问题解决方案。

2 回复

使用blue_plus插件连接蓝牙设备步骤:

  1. 添加依赖:flutter pub add blue_plus
  2. 请求权限:蓝牙和位置权限
  3. 扫描设备:BluePlus.scan
  4. 连接设备:device.connect()
  5. 发现服务:device.discoverServices()
  6. 读写特征值

记得处理连接状态和错误回调。

更多关于Flutter如何使用blue_plus插件连接蓝牙设备的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用blue_plus插件连接蓝牙设备,步骤如下:

  1. 添加依赖pubspec.yaml 中添加:
dependencies:
  flutter_blue_plus: ^1.0.0

运行 flutter pub get

  1. 配置权限
  • 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>
  1. 核心连接代码
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) {
    // 显示设备列表
  },
)
  1. 完整连接流程
  • 检查蓝牙状态:FlutterBluePlus.isAvailable
  • 开始扫描
  • 选择目标设备
  • 调用连接方法
  • 处理连接状态:device.connectionState.listen()

注意:

  • 需要处理动态权限申请(Android 12+需要BLUETOOTH_CONNECT权限)
  • iOS需要物理设备测试
  • 连接前建议先停止扫描:FlutterBluePlus.stopScan()
回到顶部