keyboard_android_platform.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import 'package:flutter/services.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:injectable/injectable.dart';
  4. import 'package:keyboard/data/repository/characters_repository.dart';
  5. import 'package:keyboard/data/repository/keyboard_repository.dart';
  6. import 'package:keyboard/utils/atmob_log.dart';
  7. import '../../di/get_it.dart';
  8. import 'keyboard_android_service.dart';
  9. import 'keyboard_method_handler.dart';
  10. @lazySingleton
  11. class KeyboardAndroidPlatform {
  12. static const _channel = MethodChannel('keyboard_android');
  13. final _tag = 'KeyboardAndroidPlatform';
  14. final KeyboardRepository keyboardRepository;
  15. final CharactersRepository charactersRepository;
  16. final KeyboardAndroidService _keyboardAndroidService;
  17. final KeyboardMethodHandler _methodHandler;
  18. KeyboardAndroidPlatform(this.keyboardRepository, this.charactersRepository)
  19. : _keyboardAndroidService = KeyboardAndroidService(),
  20. _methodHandler = KeyboardMethodHandler(
  21. keyboardRepository,
  22. charactersRepository,
  23. ) {
  24. AtmobLog.d(_tag, '初始化 KeyboardAndroidPlatform');
  25. _init();
  26. }
  27. void _init() {
  28. _channel.setMethodCallHandler(_methodHandler.handleMethodCall);
  29. }
  30. Future<void> sendDynamicTextRequest(
  31. String method,
  32. String currentContent,
  33. ) async {
  34. AtmobLog.d(_tag, 'sendDynamicTextRequest: $method');
  35. switch (method) {
  36. case 'MethodA':
  37. AtmobLog.d(_tag, '处理 MethodA');
  38. break;
  39. default:
  40. AtmobLog.d(_tag, '默认处理');
  41. }
  42. }
  43. void enableFloatingWindow(bool enable) {
  44. debugPrint('enableFloatingWindow $enable');
  45. _keyboardAndroidService.enableFloatingWindow(enable);
  46. }
  47. void openInputMethodSettings() {
  48. debugPrint('openInputMethodSettings');
  49. _keyboardAndroidService.openInputMethodSettings();
  50. }
  51. Future<bool> isTargetKeyboardEnabled() {
  52. final result = _keyboardAndroidService.isTargetKeyboardEnabled();
  53. debugPrint('isTargetKeyboardEnabled value: $result');
  54. return result;
  55. }
  56. static KeyboardAndroidPlatform getInstance() {
  57. return getIt.get<KeyboardAndroidPlatform>();
  58. }
  59. }