Flutter如何使用plus flutter blue插件

我在Flutter项目中需要实现蓝牙功能,看到有plus_flutter_blue插件但不太会使用。具体遇到几个问题:

  1. 如何正确安装和配置这个插件?在pubspec.yaml添加依赖后还需要其他设置吗?
  2. 插件文档提到的Android/iOS权限配置具体要怎么操作?
  3. 搜索蓝牙设备时总是返回空列表,但手机蓝牙设置里能看到设备,可能是什么原因?
  4. 读写蓝牙特征值时有没有推荐的最佳实践或常见问题解决方案?

希望能得到具体的使用示例和常见坑的避坑指南,谢谢!

2 回复

使用Flutter Blue Plus插件步骤:

  1. 在pubspec.yaml添加依赖:flutter_blue_plus: ^版本号
  2. 导入包:import 'package:flutter_blue_plus/flutter_blue_plus.dart';
  3. 常用功能:扫描设备、连接、读写特征值等
  4. 注意添加蓝牙权限(Android/iOS)

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


Flutter 使用 flutter_blue_plus 插件进行蓝牙操作,步骤如下:

1. 添加依赖

pubspec.yaml 文件中添加:

dependencies:
  flutter_blue_plus: ^1.30.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" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Android 12 及以上需要 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

iOS(在 ios/Runner/Info.plist 中添加):

<dict>
  <key>NSBluetoothAlwaysUsageDescription</key>
  <string>需要蓝牙权限以连接设备</string>
</dict>

3. 基本使用示例

import 'package:flutter_blue_plus/flutter_blue_plus.dart';

class BluetoothController {
  // 扫描设备
  void startScan() {
    FlutterBluePlus.startScan(timeout: Duration(seconds: 10));
    FlutterBluePlus.scanResults.listen((results) {
      for (ScanResult result in results) {
        print('发现设备: ${result.device.name} | RSSI: ${result.rssi}');
      }
    });
  }

  // 停止扫描
  void stopScan() {
    FlutterBluePlus.stopScan();
  }

  // 连接设备
  Future<void> connect(BluetoothDevice device) async {
    await device.connect();
    print('已连接到 ${device.name}');
  }

  // 发现服务与特征值
  Future<void> discoverServices(BluetoothDevice device) async {
    List<BluetoothService> services = await device.discoverServices();
    for (var service in services) {
      for (var characteristic in service.characteristics) {
        print('特征值: ${characteristic.uuid}');
      }
    }
  }
}

4. 注意事项

  • Android 12+ 需在 AndroidManifest.xml 中声明 BLUETOOTH_SCANBLUETOOTH_CONNECT 权限。
  • iOS 需在 Info.plist 中配置 NSBluetoothAlwaysUsageDescription
  • 测试时请使用真实蓝牙设备,模拟器不支持蓝牙功能。

通过以上步骤即可在 Flutter 中集成 flutter_blue_plus 实现蓝牙功能。

回到顶部