flutter如何打开蓝牙

在Flutter中如何打开设备的蓝牙功能?需要用到哪些插件或API?能否提供一个简单的代码示例?

2 回复

在Flutter中,使用flutter_blue_plus库打开蓝牙。首先添加依赖,然后调用FlutterBluePlus.turnOn()方法。需要添加蓝牙权限到Android和iOS的配置文件中。

更多关于flutter如何打开蓝牙的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中打开蓝牙,需要使用第三方插件。以下是具体步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  flutter_blue_plus: ^1.8.0

然后运行 flutter pub get

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"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>

iOS (ios/Runner/Info.plist):

<dict>
  <key>NSBluetoothAlwaysUsageDescription</key>
  <string>需要蓝牙权限来连接设备</string>
</dict>

3. 核心代码示例

import 'package:flutter_blue_plus/flutter_blue_plus.dart';

class BluetoothController {
  // 检查蓝牙状态
  Future<bool> checkBluetoothState() async {
    BluetoothAdapterState state = await FlutterBluePlus.adapterState.first;
    return state == BluetoothAdapterState.on;
  }

  // 打开蓝牙
  Future<void> turnOnBluetooth() async {
    try {
      await FlutterBluePlus.turnOn();
    } catch (e) {
      print("打开蓝牙失败: $e");
    }
  }

  // 请求权限(Android需要)
  Future<bool> requestPermissions() async {
    return await FlutterBluePlus.isSupported.then((supported) {
      if (supported) {
        return FlutterBluePlus.requestPermissions();
      }
      return false;
    });
  }
}

// 使用示例
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  BluetoothController controller = BluetoothController();
  
  // 请求权限
  bool granted = await controller.requestPermissions();
  if (granted) {
    // 检查蓝牙状态
    bool isOn = await controller.checkBluetoothState();
    if (!isOn) {
      await controller.turnOnBluetooth();
    }
  }
}

4. 注意事项

  • iOS 模拟器不支持蓝牙功能
  • Android 需要动态申请位置权限
  • 不同Android版本权限要求可能不同
  • 首次使用需要用户手动授权

5. 其他常用操作

// 扫描设备
FlutterBluePlus.scanResults.listen((results) {
  for (ScanResult result in results) {
    print('发现设备: ${result.device.name}');
  }
});

// 停止扫描
FlutterBluePlus.stopScan();

建议查看 flutter_blue_plus 官方文档获取最新用法。

回到顶部