keyboard_tutorial_controller.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import 'package:get/get.dart';
  2. import 'package:injectable/injectable.dart';
  3. import 'package:keyboard/base/base_controller.dart';
  4. import 'package:keyboard/module/keyboard_guide/keyboard_guide_page.dart';
  5. import '../../plugins/keyboard_android_platform.dart';
  6. import '../../utils/floating_window_util.dart';
  7. import '../../utils/keyboard_tutorial_util.dart';
  8. /// 键盘使用教程-引导页Controller
  9. @injectable
  10. class KeyboardTutorialController extends BaseController {
  11. /// 键盘是否启用
  12. Rx<bool> isKeyboardEnable = false.obs;
  13. /// 悬浮球是否启用
  14. Rx<bool> isFloatingWindowEnable = false.obs;
  15. /// 是否步骤都允许了
  16. bool get isStepComplete =>
  17. isKeyboardEnable.value && isFloatingWindowEnable.value;
  18. @override
  19. void onInit() {
  20. super.onInit();
  21. checkSetting();
  22. }
  23. /// 检查设置
  24. void checkSetting() {
  25. // 检查键盘是否启用
  26. KeyboardAndroidPlatform.isTargetKeyboardEnabled().then((enable) {
  27. isKeyboardEnable.value = enable;
  28. });
  29. // 检查是否有悬浮窗权限
  30. KeyboardAndroidPlatform.hasFloatingWindowPermission().then((hasPermission) {
  31. isFloatingWindowEnable.value = hasPermission;
  32. });
  33. // 有权限,则开启悬浮窗
  34. FloatingWindowUtil.showFloatingBall();
  35. }
  36. /// 点击返回
  37. void clickBack() {
  38. Get.back();
  39. }
  40. /// 点击跳过
  41. void clickSkip() {
  42. KeyboardTutorialUtil.setNotFirstShowKeyboardTutorial();
  43. Get.back();
  44. }
  45. /// 去启用键盘
  46. void goEnableKeyboard() {
  47. KeyboardAndroidPlatform.openInputMethodSettings();
  48. }
  49. /// 去启用悬浮窗
  50. void jumpFloatingWindowSetting() {
  51. KeyboardAndroidPlatform.jumpFloatingWindowSetting();
  52. }
  53. /// 跳转到键盘引导页
  54. void jump2KeyboardGuide() {
  55. // 标记,已经完成了键盘引导
  56. KeyboardTutorialUtil.setNotFirstShowKeyboardTutorial();
  57. // 跳转,并关闭自己
  58. KeyboardGuidePage.startAndOffMe();
  59. }
  60. /// 检查,是否步骤都完成了
  61. Future<bool> checkHasComplete() async {
  62. // 都完成了,则跳转到键盘引导页
  63. if (await KeyboardTutorialUtil.isTutorialComplete()) {
  64. jump2KeyboardGuide();
  65. return true;
  66. }
  67. return false;
  68. }
  69. }