import 'dart:io';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:permission_handler/permission_handler.dart';
class BluetoothRepository {
Future<bool> isSupported() {
return FlutterBluePlus.isSupported;
}
Future<bool> isEnabled() async {
final adapterState = await FlutterBluePlus.adapterState.first;
return adapterState == BluetoothAdapterState.on;
}
// app does not require bluetooth permission (yet).
// Consider remove when app is released and still not needed
Future<bool> isPermissionGranted() async {
// On iOS, only Permission.bluetooth is supported by permission_handler_apple.
// bluetoothAdvertise/Scan/Connect are Android-only and always return denied on iOS.
final permission = Platform.isIOS ? Permission.bluetooth : Permission.bluetoothAdvertise;
final status = await permission.status;
return status == PermissionStatus.granted;
}
Future<bool> request() async {
final status = await Permission.bluetoothAdvertise.request();
return status == PermissionStatus.granted;
}
Stream<bool> isEnabledStream() async* {
await for (final state in FlutterBluePlus.adapterState) {
if (state == BluetoothAdapterState.on) yield true;
if (state == BluetoothAdapterState.off) yield false;
}
}
}