Pārlūkot izejas kodu

Add TerminalBackend.isReady and connect to Terminal.isReady

This allows the backend to communicate when it's ready to resize etc.
J-P Nurmi 3 gadi atpakaļ
vecāks
revīzija
66bd1b0fef

+ 3 - 0
example/lib/isolate.dart

@@ -53,6 +53,9 @@ class FakeTerminalBackend extends TerminalBackend {
   // ignore: close_sinks
   late final _outStream;
 
+  @override
+  bool get isReady => true;
+
   @override
   Future<int> get exitCode => _exitCodeCompleter.future;
 

+ 3 - 0
example/lib/local.dart

@@ -33,6 +33,9 @@ class LocalTerminalBackend extends TerminalBackend {
     environment: Platform.environment,
   );
 
+  @override
+  bool get isReady => true;
+
   @override
   Future<int> get exitCode => pty.exitCode;
 

+ 3 - 0
example/lib/main.dart

@@ -34,6 +34,9 @@ class FakeTerminalBackend extends TerminalBackend {
   // ignore: close_sinks
   final _outStream = StreamController<String>();
 
+  @override
+  bool get isReady => true;
+
   @override
   Future<int> get exitCode => _exitCodeCompleter.future;
 

+ 3 - 0
example/lib/ssh.dart

@@ -52,6 +52,9 @@ class SSHTerminalBackend extends TerminalBackend {
     _outStream.sink.add(data);
   }
 
+  @override
+  bool get isReady => true;
+
   @override
   Future<int> get exitCode => _exitCodeCompleter.future;
 

+ 1 - 1
lib/terminal/terminal.dart

@@ -669,7 +669,7 @@ class Terminal
   String? get selectedText => getSelectedText();
 
   @override
-  bool get isReady => true;
+  bool get isReady => backend?.isReady ?? true;
 
   @override
   void onMouseTap(Position position) {

+ 3 - 0
lib/terminal/terminal_backend.dart

@@ -9,6 +9,9 @@ abstract class TerminalBackend {
   /// then strongly consider instantiating them here
   void init();
 
+  /// returns whether the backend is ready to be used
+  bool get isReady;
+
   /// Stream for data that gets read from the backend
   Stream<String> get out;
 

+ 3 - 0
test/terminal/terminal_isolate_test.dart

@@ -36,6 +36,9 @@ class FakeBackend implements TerminalBackend {
   @override
   void ackProcessed() {}
 
+  @override
+  bool get isReady => true;
+
   @override
   // TODO: implement exitCode
   Future<int> get exitCode => _exitCodeCompleter.future;