permission_setting_page.dart 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import 'package:get/get.dart';
  4. import 'package:location/base/base_page.dart';
  5. import 'package:location/module/permission/permission_setting_controller.dart';
  6. import 'package:location/resource/colors.gen.dart';
  7. import 'package:location/resource/string.gen.dart';
  8. import 'package:location/utils/common_expand.dart';
  9. import 'package:location/widget/common_view.dart';
  10. import '../../router/app_pages.dart';
  11. class PermissionSettingPage extends BasePage<PermissionSettingController> {
  12. const PermissionSettingPage({super.key});
  13. static void start() {
  14. Get.toNamed(RoutePath.permissionSetting);
  15. }
  16. @override
  17. Widget buildBody(BuildContext context) {
  18. return Column(
  19. children: [
  20. CommonView.buildAppBar(StringName.mineFunPermissionSetting,
  21. backOnTap: () => Get.back(), titleCenter: false),
  22. SizedBox(height: 12.w),
  23. Expanded(
  24. child: ListView(
  25. children: [
  26. buildPermissionItem(StringName.permissionLocationSetting,
  27. StringName.permissionLocationSettingSubtitle, () {
  28. controller.openLocationSetting();
  29. }),
  30. Obx(() {
  31. return Visibility(
  32. visible: controller.permissionShowBattery,
  33. child: buildPermissionItem(
  34. StringName.permissionBatteryOptimization,
  35. StringName.permissionBatteryOptimizationSubtitle, () {
  36. controller.openBatterySetting();
  37. }),
  38. );
  39. }),
  40. Obx(() {
  41. return Visibility(
  42. visible: controller.permissionShowBackgroundRun,
  43. child: buildPermissionItem(
  44. StringName.permissionBackgroundOperation,
  45. StringName.permissionBackgroundOperationSubtitle, () {
  46. controller.openBackgroundRunSetting();
  47. }),
  48. );
  49. }),
  50. Obx(() {
  51. return Visibility(
  52. visible: controller.permissionShowTip,
  53. child: buildPermissionTips());
  54. })
  55. ],
  56. ))
  57. ],
  58. );
  59. }
  60. Widget buildPermissionItem(
  61. String title, String subTitle, VoidCallback onTap) {
  62. return Container(
  63. margin: EdgeInsets.only(bottom: 12.w, left: 12.w, right: 12.w),
  64. decoration: BoxDecoration(
  65. color: '#FAFAFA'.color,
  66. borderRadius: BorderRadius.circular(6.w),
  67. ),
  68. padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 22.w),
  69. child: Column(
  70. children: [
  71. Row(
  72. children: [
  73. Text(
  74. title,
  75. style: TextStyle(
  76. fontSize: 16.sp,
  77. color: '#202020'.color,
  78. fontWeight: FontWeight.bold),
  79. ),
  80. Spacer(),
  81. GestureDetector(
  82. onTap: onTap,
  83. child: Container(
  84. decoration: BoxDecoration(
  85. color: ColorName.colorPrimary,
  86. borderRadius: BorderRadius.circular(100.w)),
  87. padding:
  88. EdgeInsets.symmetric(horizontal: 15.w, vertical: 5.w),
  89. child: Text(StringName.permissionSetting,
  90. style:
  91. TextStyle(fontSize: 14.sp, color: ColorName.white)),
  92. ),
  93. )
  94. ],
  95. ),
  96. SizedBox(height: 8.w),
  97. Text(subTitle,
  98. style: TextStyle(fontSize: 14.sp, color: '#404040'.color))
  99. ],
  100. ),
  101. );
  102. }
  103. Widget buildPermissionTips() {
  104. return Container(
  105. decoration: BoxDecoration(
  106. color: '#FAFAFA'.color,
  107. borderRadius: BorderRadius.circular(6.w),
  108. ),
  109. padding: EdgeInsets.symmetric(vertical: 24.w, horizontal: 12.w),
  110. margin: EdgeInsets.only(left: 12.w, right: 12.w),
  111. child: Column(
  112. crossAxisAlignment: CrossAxisAlignment.start,
  113. children: [
  114. RichText(
  115. text: TextSpan(
  116. style: TextStyle(fontSize: 14.sp, color: '#404040'.color),
  117. children: [
  118. TextSpan(text: '温馨提示:'),
  119. TextSpan(
  120. text: '请勿开启【省电模式】\n\n',
  121. style: TextStyle(fontSize: 14.sp, color: '#EC5050'.color)),
  122. TextSpan(text: '在省电模式下,可能会导致轨迹异常等问题,建议您关闭省电模式')
  123. ])),
  124. ],
  125. ),
  126. );
  127. }
  128. }