permission_setting_page.dart 4.6 KB

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