flutter_blue_plus如何获取蓝牙设备列表
我在使用flutter_blue_plus插件时遇到问题,无法正确获取蓝牙设备列表。已经按照文档调用了startScan方法,但扫描不到任何设备。请问:
- 是否需要额外配置权限?
- 安卓和iOS的获取方式有区别吗?
- 正确的设备扫描流程是什么?
- 如何过滤扫描到的设备?
2 回复
我在使用flutter_blue_plus插件时遇到问题,无法正确获取蓝牙设备列表。已经按照文档调用了startScan方法,但扫描不到任何设备。请问:
使用 flutter_blue_plus 获取蓝牙设备列表的步骤:
FlutterBluePlus.startScan(timeout: Duration(seconds: 10));FlutterBluePlus.scanResults.listen((results) { ... });results 包含发现的设备信息。注意:需要蓝牙权限和设备定位权限。
更多关于flutter_blue_plus如何获取蓝牙设备列表的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
使用 flutter_blue_plus 获取蓝牙设备列表的步骤如下:
在 pubspec.yaml 中添加:
dependencies:
flutter_blue_plus: ^1.0.0
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>
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
class BluetoothListPage extends StatefulWidget {
@override
_BluetoothListPageState createState() => _BluetoothListPageState();
}
class _BluetoothListPageState extends State<BluetoothListPage> {
List<BluetoothDevice> _devices = [];
@override
void initState() {
super.initState();
_startScan();
}
void _startScan() {
// 开始扫描
FlutterBluePlus.startScan(timeout: Duration(seconds: 10));
// 监听扫描结果
FlutterBluePlus.scanResults.listen((results) {
setState(() {
_devices = results.map((r) => r.device).toList();
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: _devices.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_devices[index].name.isEmpty ? 'Unknown' : _devices[index].name),
subtitle: Text(_devices[index].remoteId.toString()),
);
},
),
);
}
}
FlutterBluePlus.startScan() 开始扫描FlutterBluePlus.scanResults 监听扫描结果BluetoothDevice 对象列表permission_handler 包)FlutterBluePlus.stopScan();
注意:扫描会消耗较多电量,建议在页面销毁时停止扫描。