keyboard_android_platform.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'package:flutter/services.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:injectable/injectable.dart';
  4. import 'package:keyboard/data/repository/account_repository.dart';
  5. import 'package:keyboard/data/repository/characters_repository.dart';
  6. import 'package:keyboard/data/repository/keyboard_repository.dart';
  7. import 'package:keyboard/utils/atmob_log.dart';
  8. import '../../di/get_it.dart';
  9. import 'keyboard_android_service.dart';
  10. import 'keyboard_method_handler.dart';
  11. @lazySingleton
  12. class KeyboardAndroidPlatform {
  13. static const _channel = MethodChannel('keyboard_android');
  14. final _tag = 'KeyboardAndroidPlatform';
  15. final KeyboardRepository keyboardRepository;
  16. final CharactersRepository charactersRepository;
  17. final AccountRepository accountRepository;
  18. final KeyboardAndroidService _keyboardAndroidService;
  19. final KeyboardMethodHandler _methodHandler;
  20. KeyboardAndroidPlatform(this.keyboardRepository, this.charactersRepository,this.accountRepository)
  21. : _keyboardAndroidService = KeyboardAndroidService(),
  22. _methodHandler = KeyboardMethodHandler(
  23. keyboardRepository,
  24. charactersRepository,
  25. accountRepository,
  26. ) {
  27. AtmobLog.d(_tag, '初始化 KeyboardAndroidPlatform');
  28. _init();
  29. }
  30. void _init() {
  31. _channel.setMethodCallHandler(_methodHandler.handleMethodCall);
  32. }
  33. 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. void enableFloatingWindow(bool enable) {
  47. debugPrint('enableFloatingWindow $enable');
  48. _keyboardAndroidService.enableFloatingWindow(enable);
  49. }
  50. void openInputMethodSettings() {
  51. debugPrint('openInputMethodSettings');
  52. _keyboardAndroidService.openInputMethodSettings();
  53. }
  54. Future<bool> isTargetKeyboardEnabled() {
  55. final result = _keyboardAndroidService.isTargetKeyboardEnabled();
  56. debugPrint('isTargetKeyboardEnabled value: $result');
  57. return result;
  58. }
  59. static KeyboardAndroidPlatform getInstance() {
  60. return getIt.get<KeyboardAndroidPlatform>();
  61. }
  62. }