import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; class BluetoothHelper { static StreamSubscription? _subscription; /// 获取当前蓝牙是否开启(跨平台封装) static Future isBluetoothOn({Duration timeout = const Duration(seconds: 2)}) async { // 先尝试直接获取(Android 上几乎即时可用) bool directCheck = await FlutterBluePlus.isOn; if (directCheck) return true; // iOS 上有初始化延迟,用 adapterState.first 再确认一次 try { BluetoothAdapterState state = await FlutterBluePlus.adapterState .firstWhere((s) => s != BluetoothAdapterState.unknown, orElse: () => BluetoothAdapterState.unknown) .timeout(timeout); return state == BluetoothAdapterState.on; } catch (_) { return false; } } /// 监听蓝牙状态变化 static void listenBluetoothState(void Function(bool isOn) onChange) { _subscription?.cancel(); _subscription = FlutterBluePlus.adapterState.listen((state) { onChange(state == BluetoothAdapterState.on); }); } /// 停止监听 static void cancelListener() { _subscription?.cancel(); _subscription = null; } }