keyboard_android_platform.dart 2.9 KB

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