input_behavior_mobile.dart 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:flutter/services.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:xterm/frontend/input_behavior_default.dart';
  4. import 'package:xterm/input/keys.dart';
  5. import 'package:xterm/xterm.dart';
  6. class InputBehaviorMobile extends InputBehaviorDefault {
  7. const InputBehaviorMobile();
  8. static const _placeholder = ' ';
  9. bool get acceptKeyStroke => false;
  10. TextEditingValue onTextEdit(TextEditingValue value, Terminal terminal) {
  11. if (value.text.length > _placeholder.length) {
  12. terminal.onInput(value.text.substring(_placeholder.length));
  13. } else if (value.text.length < _placeholder.length) {
  14. terminal.keyInput(TerminalKey.backspace);
  15. } else {
  16. if (value.selection.baseOffset < 1) {
  17. terminal.keyInput(TerminalKey.arrowLeft);
  18. } else if (value.selection.baseOffset > 1) {
  19. terminal.keyInput(TerminalKey.arrowRight);
  20. }
  21. }
  22. print(value);
  23. // return TextEditingValue(text: ' ', composing: TextRange());
  24. return TextEditingValue(
  25. text: _placeholder,
  26. selection: TextSelection.collapsed(offset: 2),
  27. );
  28. }
  29. void onAction(TextInputAction action, Terminal terminal) {
  30. print('action $action');
  31. switch (action) {
  32. case TextInputAction.done:
  33. terminal.keyInput(TerminalKey.enter);
  34. break;
  35. default:
  36. print('unknown action $action');
  37. }
  38. }
  39. }