keyboard_android_platform.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import 'package:flutter/services.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:keyboard/plugins/plugin_constant.dart';
  4. import 'package:keyboard/utils/atmob_log.dart';
  5. import 'default_keyboard_change_listener.dart';
  6. import 'keyboard_android_service.dart';
  7. import 'keyboard_method_handler.dart';
  8. class KeyboardAndroidPlatform {
  9. KeyboardAndroidPlatform._();
  10. static const MethodChannel _channel = MethodChannel(
  11. PluginConstant.flutterMethodChannelName,
  12. );
  13. static const String _tag = 'KeyboardAndroidPlatform';
  14. static final KeyboardAndroidService _keyboardAndroidService =
  15. KeyboardAndroidService();
  16. static final KeyboardMethodHandler _methodHandler = KeyboardMethodHandler();
  17. static void init() async {
  18. AtmobLog.d(_tag, '初始化 KeyboardAndroidPlatform ');
  19. _channel.setMethodCallHandler(_methodHandler.handleMethodCall);
  20. // 通知插件初始化
  21. await initPlugin();
  22. // 默认键盘切换监听器
  23. DefaultKeyboardMonitor.init();
  24. startFlowingBall();
  25. }
  26. /// 开启悬浮球
  27. static Future<void> startFlowingBall() async {
  28. bool hasFloatingWindowPermission =
  29. await KeyboardAndroidPlatform.hasFloatingWindowPermission();
  30. // 已有权限,则显示悬浮球
  31. if (hasFloatingWindowPermission) {
  32. KeyboardAndroidPlatform.enableFloatingWindow(true);
  33. }
  34. }
  35. static Future<void> sendDynamicTextRequest(
  36. String method,
  37. String currentContent,
  38. ) async {
  39. AtmobLog.d(_tag, 'sendDynamicTextRequest: $method');
  40. switch (method) {
  41. case 'MethodA':
  42. AtmobLog.d(_tag, '处理 MethodA');
  43. break;
  44. default:
  45. AtmobLog.d(_tag, '默认处理');
  46. }
  47. }
  48. /// 初始化插件
  49. static Future<void> initPlugin() async {
  50. debugPrint('initPlugin');
  51. return _keyboardAndroidService.initPlugin();
  52. }
  53. /// 打开/关闭悬浮窗
  54. static void enableFloatingWindow(bool enable) {
  55. debugPrint('enableFloatingWindow $enable');
  56. _keyboardAndroidService.enableFloatingWindow(enable);
  57. }
  58. /// 跳转到系统的悬浮窗设置页
  59. static void jumpFloatingWindowSetting() {
  60. debugPrint('jumpFloatingWindowSetting');
  61. _keyboardAndroidService.jumpFloatingWindowSetting();
  62. }
  63. /// 是否有悬浮窗权限
  64. static Future<bool> hasFloatingWindowPermission() {
  65. debugPrint('hasFloatingWindowPermission');
  66. return _keyboardAndroidService.hasFloatingWindowPermission();
  67. }
  68. /// 打开输入法设置
  69. static void openInputMethodSettings() {
  70. debugPrint('openInputMethodSettings');
  71. _keyboardAndroidService.openInputMethodSettings();
  72. }
  73. /// 是否启用目标输入法
  74. static Future<bool> isTargetKeyboardEnabled() async {
  75. final result = await _keyboardAndroidService.isTargetKeyboardEnabled();
  76. debugPrint('isTargetKeyboardEnabled value: $result');
  77. return result;
  78. }
  79. /// 是否是默认输入法
  80. static Future<bool> isDefaultKeyboard() async {
  81. final result = await _keyboardAndroidService.isDefaultKeyboard();
  82. debugPrint('isTargetKeyboardEnabled value: $result');
  83. return result;
  84. }
  85. }