requestPermissions method
Implementation
Future<bool> requestPermissions() async {
// iOS doesn't need runtime permissions for Bluetooth
if (Platform.isIOS) {
return true;
}
// Android permission handling
if (Platform.isAndroid) {
// Get Android SDK version to determine which permissions to request
final androidInfo = await DeviceInfoPlugin().androidInfo;
final isAndroid12OrHigher =
androidInfo.version.sdkInt >= 31; // Android 12 is API 31+
if (isAndroid12OrHigher) {
// Android 12+ requires BLUETOOTH_SCAN and BLUETOOTH_CONNECT
final statuses = await [
Permission.bluetoothScan,
Permission.bluetoothConnect,
].request();
return statuses[Permission.bluetoothScan]!.isGranted &&
statuses[Permission.bluetoothConnect]!.isGranted;
} else {
// Android 11 and below requires LOCATION permission for Bluetooth scanning
final statuses = await [Permission.location].request();
return statuses[Permission.location]!.isGranted;
}
}
// Default fallback for other platforms
return true;
}