keyboard_android_platform.dart 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. }
  25. static Future<void> sendDynamicTextRequest(
  26. String method,
  27. String currentContent,
  28. ) async {
  29. AtmobLog.d(_tag, 'sendDynamicTextRequest: $method');
  30. switch (method) {
  31. case 'MethodA':
  32. AtmobLog.d(_tag, '处理 MethodA');
  33. break;
  34. default:
  35. AtmobLog.d(_tag, '默认处理');
  36. }
  37. }
  38. /// 初始化插件
  39. static Future<void> initPlugin() async {
  40. debugPrint('initPlugin');
  41. return _keyboardAndroidService.initPlugin();
  42. }
  43. /// 打开/关闭悬浮窗
  44. static void enableFloatingWindow(bool enable) {
  45. debugPrint('enableFloatingWindow $enable');
  46. _keyboardAndroidService.enableFloatingWindow(enable);
  47. }
  48. /// 跳转到系统的悬浮窗设置页
  49. static void jumpFloatingWindowSetting() {
  50. debugPrint('jumpFloatingWindowSetting');
  51. _keyboardAndroidService.jumpFloatingWindowSetting();
  52. }
  53. /// 是否有悬浮窗权限
  54. static Future<bool> hasFloatingWindowPermission() {
  55. debugPrint('hasFloatingWindowPermission');
  56. return _keyboardAndroidService.hasFloatingWindowPermission();
  57. }
  58. /// 打开输入法设置
  59. static void openInputMethodSettings() {
  60. debugPrint('openInputMethodSettings');
  61. _keyboardAndroidService.openInputMethodSettings();
  62. }
  63. /// 是否启用目标输入法
  64. static Future<bool> isTargetKeyboardEnabled() async {
  65. final result = await _keyboardAndroidService.isTargetKeyboardEnabled();
  66. debugPrint('isTargetKeyboardEnabled value: $result');
  67. return result;
  68. }
  69. }