Flutter如何实现简单的蓝牙连接
在Flutter中如何实现简单的蓝牙连接功能?需要使用哪些插件或库?能否提供一个基本的代码示例,包括设备扫描、连接和数据传输的实现步骤?另外,在Android和iOS平台上是否有兼容性差异需要注意?
2 回复
Flutter可通过flutter_blue插件实现蓝牙连接。步骤:
- 添加依赖;
- 请求权限;
- 扫描设备;
- 连接设备;
- 收发数据。
注意:需配置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()方法
注意事项
- 需要真机测试,模拟器不支持蓝牙
- Android 6.0+需要位置权限才能扫描BLE设备
- iOS需要描述蓝牙使用用途
这个实现包含了最基本的蓝牙扫描和连接功能,实际使用时还需要添加错误处理和状态管理。

