keyboard_tutorial_controller.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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_helper.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. FloatingWindowHelper.showFloatingBall();
  35. }
  36. /// 点击返回
  37. void clickBack() {
  38. Get.back();
  39. }
  40. /// 点击跳过
  41. void clickSkip() {
  42. // 标记,已经完成了键盘引导
  43. KeyboardTutorialUtil.setNotFirstShowKeyboardTutorial();
  44. // 跳转到键盘引导页,并关闭自己
  45. KeyboardGuidePage.startAndOffMe();
  46. }
  47. /// 去启用键盘
  48. void goEnableKeyboard() {
  49. KeyboardAndroidPlatform.openInputMethodSettings();
  50. }
  51. /// 去启用悬浮窗
  52. void jumpFloatingWindowSetting() {
  53. KeyboardAndroidPlatform.jumpFloatingWindowSetting();
  54. }
  55. /// 跳转到键盘引导页
  56. void jump2KeyboardGuide() {
  57. // 标记,已经完成了键盘引导
  58. KeyboardTutorialUtil.setNotFirstShowKeyboardTutorial();
  59. // 跳转,并关闭自己
  60. KeyboardGuidePage.startAndOffMe();
  61. }
  62. /// 检查,是否步骤都完成了
  63. Future<bool> checkHasComplete() async {
  64. // 都完成了,则跳转到键盘引导页
  65. if (await KeyboardTutorialUtil.isTutorialComplete()) {
  66. jump2KeyboardGuide();
  67. return true;
  68. }
  69. return false;
  70. }
  71. }