keyboard_tutorial_controller.dart 2.5 KB

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