@@ -16,6 +16,7 @@ class _PermissionsScreenState extends State<PermissionsScreen> {
1616 var _microphonePermissionGranted = false ;
1717 var _locationPermissionGranted = false ;
1818 var _galleryPermissionGranted = false ;
19+ var _batteryPermissionGranted = false ;
1920
2021 Future <void > _requestCameraPermission () async {
2122 await Future <void >.delayed (Duration (seconds: 1 ));
@@ -49,6 +50,13 @@ class _PermissionsScreenState extends State<PermissionsScreen> {
4950 });
5051 }
5152
53+ Future <void > _requestBatteryPermission () async {
54+ final status = await Permission .ignoreBatteryOptimizations.request ();
55+ setState (() {
56+ _batteryPermissionGranted = status == PermissionStatus .granted;
57+ });
58+ }
59+
5260 @override
5361 void initState () {
5462 super .initState ();
@@ -83,6 +91,14 @@ class _PermissionsScreenState extends State<PermissionsScreen> {
8391 });
8492 }),
8593 );
94+
95+ unawaited (
96+ Permission .ignoreBatteryOptimizations.status.then ((value) {
97+ setState (() {
98+ _batteryPermissionGranted = value == PermissionStatus .granted;
99+ });
100+ }),
101+ );
86102 }
87103
88104 @override
@@ -121,6 +137,13 @@ class _PermissionsScreenState extends State<PermissionsScreen> {
121137 onTap: _requestGalleryPermission,
122138 key: K .galleryPermissionTile,
123139 ),
140+ _PermissionTile (
141+ name: 'Battery Optimizations' ,
142+ icon: Icons .battery_0_bar,
143+ granted: _batteryPermissionGranted,
144+ onTap: _requestBatteryPermission,
145+ key: K .batteryPermissionTile,
146+ ),
124147 ],
125148 ),
126149 ),
@@ -148,6 +171,7 @@ class _PermissionTile extends StatelessWidget {
148171 'microphone' => K .requestMicrophonePermissionButton,
149172 'location' => K .requestLocationPermissionButton,
150173 'gallery' => K .requestGalleryPermissionButton,
174+ 'battery optimizations' => K .requestBatteryPermissionButton,
151175 _ => Key ('request${permissionName }PermissionButton' ),
152176 };
153177
0 commit comments