Flutter_blue_plus如何完整使用

我在使用Flutter_blue_plus插件进行蓝牙开发时遇到了一些问题,想请教大家:

  1. 如何正确初始化并扫描附近的蓝牙设备?
  2. 连接设备后如何进行数据读写操作?
  3. 如何处理蓝牙连接状态的变化和异常情况?
  4. 这个插件支持哪些蓝牙协议和特性?
  5. 有没有完整的示例代码可以参考?

希望能得到一些实用的开发经验和注意事项,谢谢!

2 回复

Flutter_blue_plus 使用步骤:

  1. 添加依赖到 pubspec.yaml
  2. 配置 Android/iOS 权限
  3. 初始化蓝牙适配器
  4. 扫描设备
  5. 连接设备
  6. 发现服务和特征
  7. 读写数据
  8. 断开连接

注意处理权限和连接状态。

更多关于Flutter_blue_plus如何完整使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter Blue Plus 是一个强大的 Flutter 蓝牙插件,支持 BLE(低功耗蓝牙)设备通信。以下是完整使用流程:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  flutter_blue_plus: ^1.0.0

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. 核心使用代码

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 r in results) {
        print('发现设备: ${r.device.name} - ${r.device.id}');
      }
    });
  }

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

  // 连接设备
  Future<void> connectDevice(BluetoothDevice device) async {
    await device.connect();
    print("已连接: ${device.name}");
    
    // 发现服务
    List<BluetoothService> services = await device.discoverServices();
    for (var service in services) {
      print("服务: ${service.uuid}");
      
      // 读取特征值
      for (var characteristic in service.characteristics) {
        print("特征: ${characteristic.uuid}");
        List<int> value = await characteristic.read();
        print("特征值: $value");
      }
    }
  }

  // 写入数据
  Future<void> writeData(BluetoothCharacteristic characteristic) async {
    await characteristic.write([0x01, 0x02]);
  }

  // 监听数据
  void listenToData(BluetoothCharacteristic characteristic) {
    characteristic.onValueReceived.listen((value) {
      print("收到数据: $value");
    });
  }

  // 断开连接
  void disconnect(BluetoothDevice device) {
    device.disconnect();
  }
}

4. 权限处理(Android 12+)

// 检查并请求权限
Future<bool> checkPermissions() async {
  if (Platform.isAndroid) {
    return await FlutterBluePlus.isSupported;
  }
  return true;
}

5. 状态监听

// 蓝牙状态
FlutterBluePlus.adapterState.listen((state) {
  if (state == BluetoothAdapterState.on) {
    print("蓝牙已开启");
  }
});

// 设备连接状态
device.connectionState.listen((state) {
  if (state == BluetoothConnectionState.connected) {
    print("设备已连接");
  }
});

注意事项:

  1. 真机测试需要开启设备蓝牙
  2. iOS 需要物理设备测试
  3. 部分功能需要特定 UUID
  4. 及时释放监听器和断开连接

建议查看官方文档获取最新 API 和完整示例:https://pub.dev/packages/flutter_blue_plus

回到顶部