فهرست منبع

adds Container while TerminalIsolate is initializing

upgrades Dart for examples
now uses dartssh2
devmil 4 سال پیش
والد
کامیت
ed68130861
6فایلهای تغییر یافته به همراه100 افزوده شده و 52 حذف شده
  1. 1 1
      example/android/app/src/main/AndroidManifest.xml
  2. 31 10
      example/lib/isolate.dart
  3. 1 1
      example/lib/main.dart
  4. 11 10
      example/lib/ssh.dart
  5. 53 27
      example/pubspec.lock
  6. 3 3
      example/pubspec.yaml

+ 1 - 1
example/android/app/src/main/AndroidManifest.xml

@@ -6,7 +6,7 @@
          additional functionality it is fine to subclass or reimplement
          FlutterApplication and put your custom class here. -->
     <application
-        android:name="io.flutter.app.FlutterApplication"
+        android:name="${applicationName}"
         android:label="example"
         android:icon="@mipmap/ic_launcher">
         <activity

+ 31 - 10
example/lib/isolate.dart

@@ -3,6 +3,8 @@ import 'dart:async';
 import 'package:flutter/material.dart';
 import 'package:xterm/flutter.dart';
 import 'package:xterm/isolate.dart';
+import 'package:xterm/theme/terminal_theme.dart';
+import 'package:xterm/theme/terminal_themes.dart';
 import 'package:xterm/xterm.dart';
 
 void main() {
@@ -18,13 +20,23 @@ class MyApp extends StatelessWidget {
         primarySwatch: Colors.blue,
         visualDensity: VisualDensity.adaptivePlatformDensity,
       ),
-      home: MyHomePage(),
+      home: MyHomePage(
+        theme: TerminalThemes.defaultTheme,
+        terminalOpacity: 0.8,
+      ),
     );
   }
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key key}) : super(key: key);
+  MyHomePage({
+    Key? key,
+    required this.theme,
+    required this.terminalOpacity,
+  }) : super(key: key);
+
+  final TerminalTheme theme;
+  final double terminalOpacity;
 
   @override
   _MyHomePageState createState() => _MyHomePageState();
@@ -86,16 +98,21 @@ class FakeTerminalBackend extends TerminalBackend {
 }
 
 class _MyHomePageState extends State<MyHomePage> {
-  final terminal = TerminalIsolate(
-    backend: FakeTerminalBackend(),
-    maxLines: 10000,
-  );
+  TerminalIsolate? terminal;
 
   Future<TerminalIsolate> _ensureTerminalStarted() async {
-    if (!terminal.isReady) {
-      await terminal.start();
+    if (terminal == null) {
+      terminal = TerminalIsolate(
+        backend: FakeTerminalBackend(),
+        maxLines: 10000,
+        theme: widget.theme,
+      );
+    }
+
+    if (!terminal!.isReady) {
+      await terminal!.start();
     }
-    return terminal;
+    return terminal!;
   }
 
   void onInput(String input) {}
@@ -109,7 +126,11 @@ class _MyHomePageState extends State<MyHomePage> {
           return SafeArea(
             child: snapshot.hasData
                 ? TerminalView(terminal: snapshot.data as TerminalIsolate)
-                : Text('Initializing...'),
+                : Container(
+                    constraints: const BoxConstraints.expand(),
+                    color: Color(widget.theme.background)
+                        .withOpacity(widget.terminalOpacity),
+                  ),
           );
         },
       ),

+ 1 - 1
example/lib/main.dart

@@ -23,7 +23,7 @@ class MyApp extends StatelessWidget {
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key key}) : super(key: key);
+  MyHomePage({Key? key}) : super(key: key);
 
   @override
   _MyHomePageState createState() => _MyHomePageState();

+ 11 - 10
example/lib/ssh.dart

@@ -1,7 +1,8 @@
 import 'dart:async';
 import 'dart:convert';
+import 'dart:typed_data';
 
-import 'package:dartssh/client.dart';
+import 'package:dartssh2/dartssh2.dart';
 import 'package:flutter/material.dart';
 import 'package:xterm/flutter.dart';
 import 'package:xterm/xterm.dart';
@@ -29,14 +30,14 @@ class MyApp extends StatelessWidget {
 }
 
 class MyHomePage extends StatefulWidget {
-  MyHomePage({Key key}) : super(key: key);
+  MyHomePage({Key? key}) : super(key: key);
 
   @override
   _MyHomePageState createState() => _MyHomePageState();
 }
 
 class SSHTerminalBackend extends TerminalBackend {
-  SSHClient client;
+  late SSHClient client;
 
   String _host;
   String _username;
@@ -63,13 +64,13 @@ class SSHTerminalBackend extends TerminalBackend {
     onWrite('connecting $_host...');
     client = SSHClient(
       hostport: Uri.parse(_host),
-      login: _username,
+      username: _username,
       print: print,
       termWidth: 80,
       termHeight: 25,
       termvar: 'xterm-256color',
-      getPassword: () => utf8.encode(_password),
-      response: (transport, data) {
+      onPasswordRequest: () => _password,
+      response: (data) {
         _sshOutput.add(data);
       },
       success: () {
@@ -92,12 +93,12 @@ class SSHTerminalBackend extends TerminalBackend {
 
   @override
   void write(String input) {
-    client?.sendChannelData(utf8.encode(input));
+    client.sendChannelData(Uint8List.fromList(utf8.encode(input)));
   }
 
   @override
   void terminate() {
-    client?.disconnect('terminate');
+    client.disconnect('terminate');
   }
 
   @override
@@ -107,8 +108,8 @@ class SSHTerminalBackend extends TerminalBackend {
 }
 
 class _MyHomePageState extends State<MyHomePage> {
-  Terminal terminal;
-  SSHTerminalBackend backend;
+  late Terminal terminal;
+  late SSHTerminalBackend backend;
 
   @override
   void initState() {

+ 53 - 27
example/pubspec.lock

@@ -1,13 +1,20 @@
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
 packages:
+  args:
+    dependency: transitive
+    description:
+      name: args
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.3.0"
   asn1lib:
     dependency: transitive
     description:
       name: asn1lib
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.5.15"
+    version: "1.0.3"
   async:
     dependency: transitive
     description:
@@ -64,15 +71,22 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.1.3"
-  dartssh:
+  dart_console:
+    dependency: transitive
+    description:
+      name: dart_console
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
+  dartssh2:
     dependency: "direct main"
     description:
       path: "."
       ref: HEAD
-      resolved-ref: "1c2244db550a56e2d53754864b8ce3da525a4b7d"
-      url: "https://github.com/TerminalStudio/dartssh"
+      resolved-ref: "3316b252ace4948f64812b7e5eca11f466d3f62d"
+      url: "https://github.com/TerminalStudio/dartssh2"
     source: git
-    version: "1.0.4+4"
+    version: "1.2.0-pre"
   equatable:
     dependency: transitive
     description:
@@ -87,13 +101,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.0"
-  fixnum:
+  ffi:
     dependency: transitive
     description:
-      name: fixnum
+      name: ffi
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.10.11"
+    version: "1.1.2"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -110,14 +124,21 @@ packages:
       name: http
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.12.2"
+    version: "0.13.4"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "3.1.4"
+    version: "4.0.0"
+  js:
+    dependency: transitive
+    description:
+      name: js
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.6.3"
   matcher:
     dependency: transitive
     description:
@@ -125,6 +146,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.12.11"
+  material_color_utilities:
+    dependency: transitive
+    description:
+      name: material_color_utilities
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.1.2"
   meta:
     dependency: transitive
     description:
@@ -139,13 +167,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
-  pedantic:
+  pinenacl:
     dependency: transitive
     description:
-      name: pedantic
+      name: pinenacl
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.9.2"
+    version: "0.3.3"
   platform_info:
     dependency: transitive
     description:
@@ -159,7 +187,7 @@ packages:
       name: pointycastle
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.0.2"
+    version: "3.4.0"
   quiver:
     dependency: transitive
     description:
@@ -213,16 +241,7 @@ packages:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.4.3"
-  tweetnacl:
-    dependency: transitive
-    description:
-      path: "."
-      ref: HEAD
-      resolved-ref: "028b09a31805c648df1db695f7a58f9fcd4099d9"
-      url: "https://github.com/TerminalStudio/tweetnacl-dart"
-    source: git
-    version: "0.3.2"
+    version: "0.4.8"
   typed_data:
     dependency: transitive
     description:
@@ -236,14 +255,21 @@ packages:
       name: validators
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.0.0+1"
+    version: "3.0.0"
   vector_math:
     dependency: transitive
     description:
       name: vector_math
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.1"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.3.3"
   xterm:
     dependency: "direct main"
     description:
@@ -252,5 +278,5 @@ packages:
     source: path
     version: "2.5.0-pre"
 sdks:
-  dart: ">=2.12.0 <3.0.0"
+  dart: ">=2.14.0 <3.0.0"
   flutter: ">=2.0.0"

+ 3 - 3
example/pubspec.yaml

@@ -18,15 +18,15 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 version: 1.0.0+1
 
 environment:
-  sdk: ">=2.7.0 <3.0.0"
+  sdk: ">=2.12.0 <3.0.0"
 
 dependencies:
   xterm:
     path: ../
 
-  dartssh:
+  dartssh2:
     git:
-      url: https://github.com/TerminalStudio/dartssh
+      url: https://github.com/TerminalStudio/dartssh2
 
   flutter:
     sdk: flutter