Flutter如何实现简单的蓝牙连接

在Flutter中如何实现简单的蓝牙连接功能?需要使用哪些插件或库?能否提供一个基本的代码示例,包括设备扫描、连接和数据传输的实现步骤?另外,在Android和iOS平台上是否有兼容性差异需要注意?

2 回复

Flutter可通过flutter_blue插件实现蓝牙连接。步骤:

  1. 添加依赖;
  2. 请求权限;
  3. 扫描设备;
  4. 连接设备;
  5. 收发数据。

注意:需配置Android/iOS权限。

更多关于Flutter如何实现简单的蓝牙连接的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现蓝牙连接,可以使用官方推荐的flutter_blue_plus插件。以下是实现简单蓝牙连接的步骤:

1. 添加依赖

pubspec.yaml中添加:

dependencies:
  flutter_blue_plus: ^1.8.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));
  }

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

  // 连接设备
  Future<void> connectDevice(BluetoothDevice device) async {
    await device.connect();
    print("已连接: ${device.localName}");
  }

  // 断开连接
  Future<void> disconnectDevice(BluetoothDevice device) async {
    await device.disconnect();
    print("已断开");
  }
}

// 在UI中使用
StreamBuilder<List<ScanResult>>(
  stream: FlutterBluePlus.scanResults,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return ListView.builder(
        itemCount: snapshot.data!.length,
        itemBuilder: (context, index) {
          final device = snapshot.data![index].device;
          return ListTile(
            title: Text(device.localName.isEmpty ? '未知设备' : device.localName),
            subtitle: Text(device.remoteId.toString()),
            onTap: () => BluetoothController().connectDevice(device),
          );
        },
      );
    }
    return CircularProgressIndicator();
  },
)

4. 主要功能说明

  • 扫描设备:调用startScan()开始搜索周边蓝牙设备
  • 显示列表:通过StreamBuilder实时显示扫描结果
  • 连接设备:点击列表项触发连接
  • 断开连接:调用disconnect()方法

注意事项

  1. 需要真机测试,模拟器不支持蓝牙
  2. Android 6.0+需要位置权限才能扫描BLE设备
  3. iOS需要描述蓝牙使用用途

这个实现包含了最基本的蓝牙扫描和连接功能,实际使用时还需要添加错误处理和状态管理。

回到顶部