input_behavior_mobile.dart 1.3 KB

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