keyboard_tutorial_util.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. static void start() async {
  10. bool isComplete = await isTutorialComplete();
  11. if (isComplete) {
  12. // 如果完成了教程,则跳转到键盘引导页
  13. KeyboardGuidePage.start();
  14. } else {
  15. // 如果没有完成教程,则跳转到键盘教程页
  16. KeyboardTutorialPage.start();
  17. }
  18. }
  19. /// 第一次显示首页,显示键盘引导页
  20. static firstMainPageShowTutorial() {
  21. if (_isFirstShowKeyboardTutorial()) {
  22. start();
  23. }
  24. }
  25. /// 是否首次显示键盘引导
  26. static bool _isFirstShowKeyboardTutorial() {
  27. return KVUtil.getBool(Constants.isFirstShowKeyboardTutorial, true);
  28. }
  29. /// 设置为非首次键盘引导
  30. static void setNotFirstShowKeyboardTutorial() {
  31. KVUtil.putBool(Constants.isFirstShowKeyboardTutorial, false);
  32. }
  33. /// 是否完成了教程
  34. static Future<bool> isTutorialComplete() async {
  35. // 是否有悬浮窗权限
  36. bool hasFloatingWindowPermission =
  37. await KeyboardAndroidPlatform.hasFloatingWindowPermission();
  38. // 是否启用了键盘
  39. bool hasIsUseKeyboard =
  40. await KeyboardAndroidPlatform.isTargetKeyboardEnabled();
  41. return hasFloatingWindowPermission && hasIsUseKeyboard;
  42. }
  43. }