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 官方文档获取最新用法。

