keyboard_tutorial_util.dart 2.2 KB

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