keyboard_tutorial_util.dart 2.2 KB

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