keyboard_tutorial_controller.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. Get.back();
  43. }
  44. /// 去启用键盘
  45. void goEnableKeyboard() {
  46. KeyboardAndroidPlatform.openInputMethodSettings();
  47. }
  48. /// 去启用悬浮窗
  49. void jumpFloatingWindowSetting() {
  50. KeyboardAndroidPlatform.jumpFloatingWindowSetting();
  51. }
  52. /// 跳转到键盘引导页
  53. void jump2KeyboardGuide() {
  54. KeyboardGuidePage.startAndOffMe();
  55. }
  56. /// 检查,是否步骤都完成了
  57. Future<bool> checkHasComplete() async {
  58. // 都完成了,则跳转到键盘引导页
  59. if (await KeyboardTutorialUtil.isTutorialComplete()) {
  60. jump2KeyboardGuide();
  61. return true;
  62. }
  63. return false;
  64. }
  65. }