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();
注意:扫描会消耗较多电量,建议在页面销毁时停止扫描。