Skip to content

Commit 26ed818

Browse files
committed
abstracted the permission logic and solved the bugs
1 parent 63a35f7 commit 26ed818

File tree

5 files changed

+45
-29
lines changed

5 files changed

+45
-29
lines changed

lib/app/modules/settings/controllers/settings_controller.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class SettingsController extends GetxController {
6262
profilesWidget.setBaseDirectory(destination);
6363
SharedPreferences prefs = await SharedPreferences.getInstance();
6464
prefs.setString('baseDirectory', destination.path);
65+
baseDirectory.value = destination.path;
6566
} else {
6667
showDialog(
6768
context: context,

lib/app/modules/settings/views/settings_page_select_directory_list_tile.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ class SettingsPageSelectDirectoryListTile extends StatelessWidget {
136136
await SharedPreferences.getInstance();
137137
await prefs.remove('baseDirectory');
138138
controller.isMovingDirectory.value = false;
139+
controller.baseDirectory.value = "Default";
139140
});
140141
},
141142
child: Text(
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import 'package:permission_handler/permission_handler.dart';
2+
3+
List<Permission> permissions = [
4+
Permission.notification,
5+
Permission.storage,
6+
Permission.manageExternalStorage,
7+
];
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// ignore_for_file: avoid_print
2+
3+
import 'package:permission_handler/permission_handler.dart';
4+
import 'package:taskwarrior/app/utils/constants/permissions.dart';
5+
6+
class PermissionsManager {
7+
static Future<void> requestAllPermissions() async {
8+
try {
9+
final results = await Future.wait(
10+
permissions.map((permission) => _requestPermission(permission)));
11+
12+
for (var i = 0; i < results.length; i++) {
13+
final permission = permissions[i];
14+
final status = results[i];
15+
16+
if (status) {
17+
print(
18+
"Permission '${permission.toString().split('.').last}' granted.");
19+
} else {
20+
print(
21+
"Permission '${permission.toString().split('.').last}' denied.");
22+
}
23+
}
24+
} catch (e) {
25+
print("Error requesting permissions: $e");
26+
}
27+
}
28+
29+
static Future<bool> _requestPermission(Permission permission) async {
30+
final status = await permission.request();
31+
return status.isGranted;
32+
}
33+
}

lib/main.dart

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,22 @@
11
import 'package:flutter/material.dart';
2-
32
import 'package:get/get.dart';
43
import 'package:permission_handler/permission_handler.dart';
54
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
6-
5+
import 'package:taskwarrior/app/utils/permissions/permissions_manager.dart';
76
import 'app/routes/app_pages.dart';
87

98
void main() async {
109
WidgetsFlutterBinding.ensureInitialized();
1110
await AppSettings.init();
1211

13-
// await Permission.notification.isDenied.then((value) {
14-
// if (value) {
15-
// Permission.notification.request();
16-
// }
17-
// });
18-
if (await Permission.notification.isDenied) {
19-
if (await Permission.notification.request().isGranted) {
20-
print("Notification permission granted");
21-
} else {
22-
print("Notification permission denied");
23-
}
24-
}
12+
await PermissionsManager.requestAllPermissions();
2513

26-
if (await Permission.storage.isDenied) {
27-
if (await Permission.storage.request().isGranted) {
28-
print("Storage permission granted");
29-
} else {
30-
print("Storage permission denied");
31-
}
32-
}
3314

34-
if (await Permission.manageExternalStorage.isDenied) {
35-
if (await Permission.manageExternalStorage.request().isGranted) {
36-
print("Manage external storage permission granted");
37-
} else {
38-
print("Manage external storage permission denied");
39-
}
40-
}
4115
runApp(
4216
GetMaterialApp(
4317
title: "Application",
4418
initialRoute: AppPages.INITIAL,
4519
getPages: AppPages.routes,
4620
),
4721
);
48-
}
22+
}

0 commit comments

Comments
 (0)