mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-18 07:44:26 +01:00
opt. for ssh
This commit is contained in:
@@ -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),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user