input_behavior_mobile.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. InputBehaviorMobile();
  8. final acceptKeyStroke = false;
  9. final initEditingState = const TextEditingValue(
  10. text: ' ',
  11. selection: TextSelection.collapsed(offset: 1),
  12. );
  13. TextEditingValue onTextEdit(
  14. TextEditingValue value, TerminalUiInteraction terminal) {
  15. if (value.text.length > initEditingState.text.length) {
  16. terminal.raiseOnInput(value.text.substring(1, value.text.length - 1));
  17. } else if (value.text.length < initEditingState.text.length) {
  18. terminal.keyInput(TerminalKey.backspace);
  19. } else {
  20. if (value.selection.baseOffset < 1) {
  21. terminal.keyInput(TerminalKey.arrowLeft);
  22. } else if (value.selection.baseOffset > 1) {
  23. terminal.keyInput(TerminalKey.arrowRight);
  24. }
  25. }
  26. return initEditingState;
  27. }
  28. void onAction(TextInputAction action, TerminalUiInteraction terminal) {
  29. print('action $action');
  30. switch (action) {
  31. case TextInputAction.done:
  32. terminal.keyInput(TerminalKey.enter);
  33. break;
  34. default:
  35. print('unknown action $action');
  36. }
  37. }
  38. }