Skip to content

Instantly share code, notes, and snippets.

@orkun1675
Created February 24, 2026 14:09
Show Gist options
  • Select an option

  • Save orkun1675/5803f43f897b22365651bdf9561ca4f4 to your computer and use it in GitHub Desktop.

Select an option

Save orkun1675/5803f43f897b22365651bdf9561ca4f4 to your computer and use it in GitHub Desktop.
import 'package:disable_battery_optimization/disable_battery_optimization.dart';
class BatteryPermission extends RequiredPermission {
static final Logger _log = Logger('BatteryPermission');
@override
String get explanation =>
'Turning off battery optimizations allows us to XXX.';
const BatteryPermission() : super(priority: 5, androidOnly: true);
@override
Future<bool> _isGrantedInternal(GeoLocationPermission permission) async {
final native =
(await DisableBatteryOptimization.isBatteryOptimizationDisabled) ??
true;
final manufacturer =
(await DisableBatteryOptimization
.isManufacturerBatteryOptimizationDisabled) ??
true;
_log.fine(
'Battery optimization info '
'native=$native manufacturer=$manufacturer',
);
return native && manufacturer;
}
@override
Future<PermissionResult> request(
GeoLocationRepository geoLocationRepository,
) async {
final nativeGranted =
(await DisableBatteryOptimization.isBatteryOptimizationDisabled) ??
true;
if (!nativeGranted) {
final result =
await DisableBatteryOptimization.showDisableBatteryOptimizationSettings();
_log.info('showDisableBatteryOptimizationSettings result is: $result');
}
final manufacturerGranted =
(await DisableBatteryOptimization
.isManufacturerBatteryOptimizationDisabled) ??
true;
if (!manufacturerGranted) {
final result =
await DisableBatteryOptimization.showDisableManufacturerBatteryOptimizationSettings(
'Your device has additional battery settings',
'Please follow the steps and disable the battery optimizations.',
);
_log.info(
'showDisableManufacturerBatteryOptimizationSettings result is: $result',
);
}
return const Success();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment