opt. for ssh

This commit is contained in:
lollipopkit
2023-01-28 13:57:35 +08:00
parent 9608c9139c
commit 587e0a4640
13 changed files with 167 additions and 71 deletions

View File

@@ -3,10 +3,13 @@ import 'dart:convert';
import 'package:dartssh2/dartssh2.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:toolbox/data/res/font_style.dart';
import 'package:xterm/xterm.dart';
import '../../core/utils.dart';
import '../../data/model/server/server_private_info.dart';
import '../../data/provider/server.dart';
import '../../data/res/terminal_theme.dart';
import '../../locator.dart';
import '../widget/virtual_keyboard.dart';
@@ -20,10 +23,11 @@ class SSHPage extends StatefulWidget {
class _SSHPageState extends State<SSHPage> {
late final terminal = Terminal(inputHandler: keyboard);
late final SSHSession session;
final keyboard = VirtualKeyboard(defaultInputHandler);
var title = '';
var isDark = false;
@override
void initState() {
@@ -31,6 +35,18 @@ class _SSHPageState extends State<SSHPage> {
initTerminal();
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
isDark = isDarkMode(context);
}
@override
void dispose() {
session.close();
super.dispose();
}
Future<void> initTerminal() async {
terminal.write('Connecting...\r\n');
@@ -46,7 +62,7 @@ class _SSHPageState extends State<SSHPage> {
terminal.write('Connected\r\n');
final session = await client.shell(
session = await client.shell(
pty: SSHPtyConfig(
width: terminal.viewWidth,
height: terminal.viewHeight,
@@ -83,14 +99,17 @@ class _SSHPageState extends State<SSHPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
backgroundColor:
Theme.of(context).appBarTheme.backgroundColor?.withOpacity(0.5),
title: Text(title, style: textSize18),
),
body: Column(
children: [
Expanded(
child: TerminalView(terminal, keyboardType: TextInputType.none),
child: TerminalView(
terminal,
keyboardType: TextInputType.visiblePassword,
theme: isDark ? termDarkTheme : termLightTheme,
keyboardAppearance: isDark ? Brightness.dark : Brightness.light,
),
),
VirtualKeyboardView(keyboard),
],