permission_setting_page.dart 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. buildPermissionItem(StringName.permissionPhoneScreenSetting,
  31. StringName.permissionPhoneScreenSettingSubtitle, () {
  32. controller.openPhoneScreenSetting();
  33. }),
  34. Obx(() {
  35. return Visibility(
  36. visible: controller.permissionShowBattery,
  37. child: buildPermissionItem(
  38. StringName.permissionBatteryOptimization,
  39. StringName.permissionBatteryOptimizationSubtitle, () {
  40. controller.openBatterySetting();
  41. }),
  42. );
  43. }),
  44. Obx(() {
  45. return Visibility(
  46. visible: controller.permissionShowBackgroundRun,
  47. child: buildPermissionItem(
  48. StringName.permissionBackgroundOperation,
  49. StringName.permissionBackgroundOperationSubtitle, () {
  50. controller.openBackgroundRunSetting();
  51. }),
  52. );
  53. }),
  54. Obx(() {
  55. return Visibility(
  56. visible: controller.permissionShowTip,
  57. child: buildPermissionTips());
  58. })
  59. ],
  60. ))
  61. ],
  62. );
  63. }
  64. Widget buildPermissionItem(
  65. String title, String subTitle, VoidCallback onTap) {
  66. return Container(
  67. margin: EdgeInsets.only(bottom: 12.w, left: 12.w, right: 12.w),
  68. decoration: BoxDecoration(
  69. color: '#FAFAFA'.color,
  70. borderRadius: BorderRadius.circular(6.w),
  71. ),
  72. padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 22.w),
  73. child: Column(
  74. children: [
  75. Row(
  76. children: [
  77. Text(
  78. title,
  79. style: TextStyle(
  80. fontSize: 16.sp,
  81. color: '#202020'.color,
  82. fontWeight: FontWeight.bold),
  83. ),
  84. Spacer(),
  85. GestureDetector(
  86. onTap: onTap,
  87. child: Container(
  88. decoration: BoxDecoration(
  89. color: ColorName.colorPrimary,
  90. borderRadius: BorderRadius.circular(100.w)),
  91. padding:
  92. EdgeInsets.symmetric(horizontal: 15.w, vertical: 5.w),
  93. child: Text(StringName.permissionSetting,
  94. style:
  95. TextStyle(fontSize: 14.sp, color: ColorName.white)),
  96. ),
  97. )
  98. ],
  99. ),
  100. SizedBox(height: 8.w),
  101. Text(subTitle,
  102. style: TextStyle(fontSize: 14.sp, color: '#404040'.color))
  103. ],
  104. ),
  105. );
  106. }
  107. Widget buildPermissionTips() {
  108. return Container(
  109. decoration: BoxDecoration(
  110. color: '#FAFAFA'.color,
  111. borderRadius: BorderRadius.circular(6.w),
  112. ),
  113. padding: EdgeInsets.symmetric(vertical: 24.w, horizontal: 12.w),
  114. margin: EdgeInsets.only(left: 12.w, right: 12.w),
  115. child: Column(
  116. crossAxisAlignment: CrossAxisAlignment.start,
  117. children: [
  118. RichText(
  119. text: TextSpan(
  120. style: TextStyle(fontSize: 14.sp, color: '#404040'.color),
  121. children: [
  122. TextSpan(text: '温馨提示:'),
  123. TextSpan(
  124. text: '请勿开启【省电模式】\n\n',
  125. style: TextStyle(fontSize: 14.sp, color: '#EC5050'.color)),
  126. TextSpan(text: '在省电模式下,可能会导致轨迹异常等问题,建议您关闭省电模式')
  127. ])),
  128. ],
  129. ),
  130. );
  131. }
  132. }