keyboard_tutorial_util.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import 'package:keyboard/data/consts/constants.dart';
  2. import 'package:keyboard/utils/mmkv_util.dart';
  3. import '../module/keyboard_guide/keyboard_guide_page.dart';
  4. import '../module/keyboard_tutorial/keyboard_tutorial_page.dart';
  5. import '../plugins/keyboard_android_platform.dart';
  6. /// 键盘教程工具类
  7. class KeyboardTutorialUtil {
  8. /// 跳转方法
  9. /// [isCheckTutorialComplete] 是否需要检查教程完成,就自动跳转到键盘引导页
  10. static void start({bool isCheckTutorialComplete = true}) async {
  11. if (isCheckTutorialComplete) {
  12. bool isComplete = await isTutorialComplete();
  13. if (isComplete) {
  14. // 如果完成了教程,则跳转到键盘引导页
  15. KeyboardGuidePage.start();
  16. } else {
  17. // 如果没有完成教程,则跳转到键盘教程页
  18. KeyboardTutorialPage.start(
  19. isCheckTutorialComplete: isCheckTutorialComplete,
  20. );
  21. }
  22. } else {
  23. // 不需要开启自动检查
  24. KeyboardTutorialPage.start(
  25. isCheckTutorialComplete: isCheckTutorialComplete,
  26. );
  27. }
  28. }
  29. /// 第一次显示首页,显示键盘引导页
  30. static firstMainPageShowTutorial() {
  31. if (_isFirstShowKeyboardTutorial()) {
  32. start();
  33. }
  34. }
  35. /// 是否首次显示键盘引导
  36. static bool _isFirstShowKeyboardTutorial() {
  37. return KVUtil.getBool(Constants.isFirstShowKeyboardTutorial, true);
  38. }
  39. /// 设置为非首次键盘引导
  40. static void setNotFirstShowKeyboardTutorial() {
  41. KVUtil.putBool(Constants.isFirstShowKeyboardTutorial, false);
  42. }
  43. /// 是否完成了教程
  44. static Future<bool> isTutorialComplete() async {
  45. // 是否有悬浮窗权限
  46. bool hasFloatingWindowPermission =
  47. await KeyboardAndroidPlatform.hasFloatingWindowPermission();
  48. // 是否启用了键盘
  49. bool hasIsUseKeyboard =
  50. await KeyboardAndroidPlatform.isTargetKeyboardEnabled();
  51. return hasFloatingWindowPermission && hasIsUseKeyboard;
  52. }
  53. }