keyboard_android_platform.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 '../data/repository/chat_repository.dart';
  10. import 'keyboard_android_service.dart';
  11. import 'keyboard_method_handler.dart';
  12. @lazySingleton
  13. class KeyboardAndroidPlatform {
  14. static const _channel = MethodChannel('keyboard_android');
  15. final _tag = 'KeyboardAndroidPlatform';
  16. final KeyboardRepository keyboardRepository;
  17. final CharactersRepository charactersRepository;
  18. final AccountRepository accountRepository;
  19. final ChatRepository chatRepository;
  20. final KeyboardAndroidService _keyboardAndroidService;
  21. final KeyboardMethodHandler _methodHandler;
  22. KeyboardAndroidPlatform(
  23. this.keyboardRepository,
  24. this.charactersRepository,
  25. this.accountRepository,
  26. this.chatRepository,
  27. ) : _keyboardAndroidService = KeyboardAndroidService(),
  28. _methodHandler = KeyboardMethodHandler(
  29. keyboardRepository,
  30. charactersRepository,
  31. accountRepository,
  32. chatRepository,
  33. ) {
  34. AtmobLog.d(_tag, '初始化 KeyboardAndroidPlatform');
  35. _init();
  36. }
  37. void _init() {
  38. _channel.setMethodCallHandler(_methodHandler.handleMethodCall);
  39. }
  40. Future<void> sendDynamicTextRequest(
  41. String method,
  42. String currentContent,
  43. ) async {
  44. AtmobLog.d(_tag, 'sendDynamicTextRequest: $method');
  45. switch (method) {
  46. case 'MethodA':
  47. AtmobLog.d(_tag, '处理 MethodA');
  48. break;
  49. default:
  50. AtmobLog.d(_tag, '默认处理');
  51. }
  52. }
  53. void enableFloatingWindow(bool enable) {
  54. debugPrint('enableFloatingWindow $enable');
  55. _keyboardAndroidService.enableFloatingWindow(enable);
  56. }
  57. void openInputMethodSettings() {
  58. debugPrint('openInputMethodSettings');
  59. _keyboardAndroidService.openInputMethodSettings();
  60. }
  61. Future<bool> isTargetKeyboardEnabled() {
  62. final result = _keyboardAndroidService.isTargetKeyboardEnabled();
  63. debugPrint('isTargetKeyboardEnabled value: $result');
  64. return result;
  65. }
  66. static KeyboardAndroidPlatform getInstance() {
  67. return getIt.get<KeyboardAndroidPlatform>();
  68. }
  69. }