keyboard_android_platform.dart 3.2 KB

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