keyboard_tutorial_util.dart 2.0 KB

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