|
|
@ -4,7 +4,6 @@ import 'package:permission_handler/permission_handler.dart'; |
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
import 'dart:ui'; |
|
|
import 'dart:ui'; |
|
|
import 'dart:io' show Platform; |
|
|
import 'dart:io' show Platform; |
|
|
import 'package:device_info_plus/device_info_plus.dart'; |
|
|
|
|
|
|
|
|
|
|
|
import '../controllers/permissions_controller.dart'; |
|
|
import '../controllers/permissions_controller.dart'; |
|
|
import '../models/permission_group.dart'; |
|
|
import '../models/permission_group.dart'; |
|
|
@ -56,23 +55,23 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Widget _buildPermissionGroups(bool isDarkMode) { |
|
|
Widget _buildPermissionGroups(bool isDarkMode) { |
|
|
return FutureBuilder<List<PermissionGroup>>( |
|
|
return FutureBuilder<List<PermissionGroupModel>>( |
|
|
future: PermissionGroup.getPlatformGroups(), |
|
|
future: PermissionGroup.getPlatformGroups(), |
|
|
builder: (context, snapshot) { |
|
|
builder: (context, snapshot) { |
|
|
if (snapshot.connectionState == ConnectionState.waiting) { |
|
|
if (snapshot.connectionState == ConnectionState.waiting) { |
|
|
return const Center(child: CircularProgressIndicator()); |
|
|
return const Center(child: CircularProgressIndicator()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (snapshot.hasError) { |
|
|
if (snapshot.hasError) { |
|
|
return Center(child: Text('加载权限组失败: ${snapshot.error}')); |
|
|
return Center(child: Text('加载权限组失败: ${snapshot.error}')); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
final groups = snapshot.data ?? []; |
|
|
final groups = snapshot.data ?? []; |
|
|
final List<Widget> widgets = []; |
|
|
final List<Widget> widgets = []; |
|
|
|
|
|
|
|
|
for (int i = 0; i < groups.length; i++) { |
|
|
for (int i = 0; i < groups.length; i++) { |
|
|
final group = groups[i]; |
|
|
final group = groups[i]; |
|
|
|
|
|
|
|
|
// 过滤平台特定权限 |
|
|
// 过滤平台特定权限 |
|
|
if (_shouldShowGroup(group)) { |
|
|
if (_shouldShowGroup(group)) { |
|
|
widgets.add(_buildPermissionSection( |
|
|
widgets.add(_buildPermissionSection( |
|
|
@ -82,21 +81,21 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
controller.permissionStatuses, |
|
|
controller.permissionStatuses, |
|
|
isDarkMode, |
|
|
isDarkMode, |
|
|
)); |
|
|
)); |
|
|
|
|
|
|
|
|
if (i < groups.length - 1) { |
|
|
if (i < groups.length - 1) { |
|
|
widgets.add(SizedBox(height: 20.h)); |
|
|
widgets.add(SizedBox(height: 20.h)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return Column(children: widgets); |
|
|
return Column(children: widgets); |
|
|
}, |
|
|
}, |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool _shouldShowGroup(PermissionGroup group) { |
|
|
bool _shouldShowGroup(PermissionGroupModel group) { |
|
|
// Android特定权限组 |
|
|
// Android特定权限组 |
|
|
if (group.titleKey == 'communicationPermissions' || |
|
|
if (group.titleKey == 'communicationPermissions' || |
|
|
group.titleKey == 'alarmPermissions') { |
|
|
group.titleKey == 'alarmPermissions') { |
|
|
return Platform.isAndroid; |
|
|
return Platform.isAndroid; |
|
|
} |
|
|
} |
|
|
@ -162,7 +161,8 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
? ImageFilter.blur(sigmaX: 5, sigmaY: 5) |
|
|
? ImageFilter.blur(sigmaX: 5, sigmaY: 5) |
|
|
: ImageFilter.blur(sigmaX: 0, sigmaY: 0), |
|
|
: ImageFilter.blur(sigmaX: 0, sigmaY: 0), |
|
|
child: Column( |
|
|
child: Column( |
|
|
children: _buildPermissionItems(permissions, statuses, isDarkMode), |
|
|
children: |
|
|
|
|
|
_buildPermissionItems(permissions, statuses, isDarkMode), |
|
|
), |
|
|
), |
|
|
), |
|
|
), |
|
|
), |
|
|
), |
|
|
@ -238,12 +238,13 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
), |
|
|
), |
|
|
), |
|
|
), |
|
|
Obx(() => Switch( |
|
|
Obx(() => Switch( |
|
|
value: status.isGranted, |
|
|
value: status.isGranted, |
|
|
onChanged: controller.isRequestingPermission.value |
|
|
onChanged: controller.isRequestingPermission.value |
|
|
? null |
|
|
? null |
|
|
: (value) => _handlePermissionToggle(permission, status, value), |
|
|
: (value) => |
|
|
activeColor: Colors.blue[600], |
|
|
_handlePermissionToggle(permission, status, value), |
|
|
)), |
|
|
activeColor: Colors.blue[600], |
|
|
|
|
|
)), |
|
|
], |
|
|
], |
|
|
), |
|
|
), |
|
|
); |
|
|
); |
|
|
@ -281,8 +282,8 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void _handlePermissionToggle( |
|
|
void _handlePermissionToggle( |
|
|
Permission permission, |
|
|
Permission permission, |
|
|
PermissionStatus status, |
|
|
PermissionStatus status, |
|
|
bool value, |
|
|
bool value, |
|
|
) { |
|
|
) { |
|
|
if (value) { |
|
|
if (value) { |
|
|
@ -293,4 +294,4 @@ class PermissionsView extends GetView<PermissionsController> { |
|
|
controller.openSettings(); |
|
|
controller.openSettings(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|