Kaynağa Gözat

add initTextEditingValue

xuty 5 yıl önce
ebeveyn
işleme
368dc835c6

+ 2 - 0
lib/frontend/input_behavior.dart

@@ -7,6 +7,8 @@ abstract class InputBehavior {
 
   bool get acceptKeyStroke;
 
+  TextEditingValue get initTextEditingValue;
+
   void onKeyStroke(RawKeyEvent event, Terminal terminal);
 
   TextEditingValue onTextEdit(TextEditingValue value, Terminal terminal);

+ 3 - 0
lib/frontend/input_behavior_default.dart

@@ -10,6 +10,9 @@ class InputBehaviorDefault extends InputBehavior {
   @override
   bool get acceptKeyStroke => true;
 
+  @override
+  TextEditingValue get initTextEditingValue => TextEditingValue.empty;
+
   @override
   void onKeyStroke(RawKeyEvent event, Terminal terminal) {
     if (event is! RawKeyDownEvent) {

+ 8 - 8
lib/frontend/input_behavior_mobile.dart

@@ -7,14 +7,17 @@ import 'package:xterm/xterm.dart';
 class InputBehaviorMobile extends InputBehaviorDefault {
   const InputBehaviorMobile();
 
-  static const _placeholder = '  ';
+  final acceptKeyStroke = false;
 
-  bool get acceptKeyStroke => false;
+  final initTextEditingValue = const TextEditingValue(
+    text: '  ',
+    selection: TextSelection.collapsed(offset: 1),
+  );
 
   TextEditingValue onTextEdit(TextEditingValue value, Terminal terminal) {
-    if (value.text.length > _placeholder.length) {
+    if (value.text.length > initTextEditingValue.text.length) {
       terminal.onInput(value.text.substring(1, value.text.length - 1));
-    } else if (value.text.length < _placeholder.length) {
+    } else if (value.text.length < initTextEditingValue.text.length) {
       terminal.keyInput(TerminalKey.backspace);
     } else {
       if (value.selection.baseOffset < 1) {
@@ -24,10 +27,7 @@ class InputBehaviorMobile extends InputBehaviorDefault {
       }
     }
 
-    return TextEditingValue(
-      text: _placeholder,
-      selection: TextSelection.collapsed(offset: 1),
-    );
+    return initTextEditingValue;
   }
 
   void onAction(TextInputAction action, Terminal terminal) {

+ 3 - 1
lib/frontend/input_listener.dart

@@ -24,6 +24,7 @@ class InputListener extends StatefulWidget {
     this.autofocus = false,
     this.listenKeyStroke = true,
     this.readOnly = false,
+    this.initTextEditingValue = TextEditingValue.empty,
   });
 
   final Widget child;
@@ -35,6 +36,7 @@ class InputListener extends StatefulWidget {
   final FocusNode focusNode;
   final bool listenKeyStroke;
   final bool readOnly;
+  final TextEditingValue initTextEditingValue;
 
   @override
   InputListenerState createState() => InputListenerState();
@@ -167,7 +169,7 @@ class InputListenerState extends State<InputListener>
         Matrix4.translationValues(dx, dy, 0.0),
       );
 
-      _conn.setEditingState(TextEditingValue.empty);
+      _conn.setEditingState(widget.initTextEditingValue);
     }
   }
 

+ 1 - 0
lib/frontend/terminal_view.dart

@@ -151,6 +151,7 @@ class _TerminalViewState extends State<TerminalView> {
       onFocus: onFocus,
       focusNode: widget.focusNode,
       autofocus: false,
+      initTextEditingValue: widget.inputBehavior.initTextEditingValue,
       child: MouseRegion(
         cursor: SystemMouseCursors.text,
         child: LayoutBuilder(builder: (context, constraints) {