import 'dart:io'; import 'package:flutter_tool_android/flutter_tool_android.dart'; import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:location/base/base_controller.dart'; import 'package:location/resource/string.gen.dart'; import 'package:location/utils/toast_util.dart'; import '../../utils/permission_util.dart'; @injectable class PermissionSettingController extends BaseController { final RxBool _permissionShowBattery = false.obs; final RxBool _permissionShowBackgroundRun = false.obs; final RxBool _permissionShowTip = false.obs; bool get permissionShowBattery => _permissionShowBattery.value; bool get permissionShowBackgroundRun => _permissionShowBackgroundRun.value; bool get permissionShowTip => _permissionShowTip.value; @override void onReady() { super.onReady(); if (Platform.isAndroid) { _permissionShowBattery.value = true; _permissionShowBackgroundRun.value = true; _permissionShowTip.value = true; } } void openLocationSetting() async { bool isGranted = await PermissionUtil.checkLocationPermission(); if (!isGranted) { isGranted = await PermissionUtil.requestLocationPermission(); } if (isGranted) { isGranted = await PermissionUtil.checkShowLocationAlways(); if (isGranted) { ToastUtil.show(StringName.permissionSettingSuccess); } else { isGranted = await PermissionUtil.requestShowLocationAlways(); if (isGranted) { ToastUtil.show(StringName.permissionSettingSuccess); } else { ToastUtil.show(StringName.permissionLocationSettingSubtitle); } } } else { ToastUtil.show(StringName.permissionRequestFail); } } void openBatterySetting() async { bool isIgnore = await FlutterToolAndroid.isIgnoringBatteryOptimizations(); if (isIgnore) { ToastUtil.show(StringName.permissionSettingSuccess); } else { FlutterToolAndroid.openBatteryOptimizationSettings(); } } void openBackgroundRunSetting() async { FlutterToolAndroid.openAppBackgroundSetting(); } }