mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 23:34:24 +01:00
opt.
This commit is contained in:
@@ -86,10 +86,6 @@ class ServerPrivateInfo {
|
|||||||
throw SSHErr(type: SSHErrType.connect, message: 'alterUrl port error');
|
throw SSHErr(type: SSHErrType.connect, message: 'alterUrl port error');
|
||||||
}
|
}
|
||||||
return _IpPort(ip_, port_);
|
return _IpPort(ip_, port_);
|
||||||
|
|
||||||
// Do not update [id]
|
|
||||||
// Because [id] is the identity which is used to find the [SSHClient]
|
|
||||||
// id = '$user@$ip:$port';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'package:after_layout/after_layout.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@@ -23,30 +24,17 @@ class PrivateKeysListPage extends StatefulWidget {
|
|||||||
_PrivateKeyListState createState() => _PrivateKeyListState();
|
_PrivateKeyListState createState() => _PrivateKeyListState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PrivateKeyListState extends State<PrivateKeysListPage> {
|
class _PrivateKeyListState extends State<PrivateKeysListPage> with AfterLayoutMixin {
|
||||||
late S _s;
|
late S _s;
|
||||||
bool firstBuild = true;
|
|
||||||
@override
|
@override
|
||||||
void didChangeDependencies() {
|
void didChangeDependencies() {
|
||||||
super.didChangeDependencies();
|
super.didChangeDependencies();
|
||||||
this._s = S.of(context)!;
|
_s = S.of(context)!;
|
||||||
print(123);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
//autoAddSystemPriavteKey();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (this.firstBuild) {
|
|
||||||
Future.delayed(Duration.zero, () {
|
|
||||||
autoAddSystemPriavteKey(context);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
_s = S.of(context)!;
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(_s.privateKey, style: textSize18),
|
title: Text(_s.privateKey, style: textSize18),
|
||||||
@@ -92,7 +80,7 @@ class _PrivateKeyListState extends State<PrivateKeysListPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void autoAddSystemPriavteKey(BuildContext context) {
|
void autoAddSystemPriavteKey() {
|
||||||
final store = locator<PrivateKeyStore>();
|
final store = locator<PrivateKeyStore>();
|
||||||
// Only trigger on desktop platform and no private key saved
|
// Only trigger on desktop platform and no private key saved
|
||||||
if (isDesktop && store.box.keys.isEmpty) {
|
if (isDesktop && store.box.keys.isEmpty) {
|
||||||
@@ -127,4 +115,9 @@ class _PrivateKeyListState extends State<PrivateKeysListPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOr<void> afterFirstLayout(BuildContext context) {
|
||||||
|
autoAddSystemPriavteKey();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,7 +491,9 @@ class _ServerPageState extends State<ServerPage>
|
|||||||
|
|
||||||
Future<void> gotoSSH(ServerPrivateInfo spi) async {
|
Future<void> gotoSSH(ServerPrivateInfo spi) async {
|
||||||
// as a `Mobile first` app -> handle mobile first
|
// as a `Mobile first` app -> handle mobile first
|
||||||
if (!isDesktop) {
|
//
|
||||||
|
// run built-in ssh on macOS due to incompatibility
|
||||||
|
if (!isDesktop || isMacOS) {
|
||||||
AppRoute(SSHPage(spi: spi), 'ssh page').go(context);
|
AppRoute(SSHPage(spi: spi), 'ssh page').go(context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -523,17 +525,12 @@ class _ServerPageState extends State<ServerPage>
|
|||||||
case "linux":
|
case "linux":
|
||||||
await Process.start("x-terminal-emulator", ["-e"] + sshCommand);
|
await Process.start("x-terminal-emulator", ["-e"] + sshCommand);
|
||||||
break;
|
break;
|
||||||
case "macos":
|
|
||||||
await Process.start("osascript", [
|
|
||||||
"-e",
|
|
||||||
'tell application "Terminal" to do script "${sshCommand.join(" ")}"'
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
showSnackBar(context, Text('Mismatch system: $system'));
|
showSnackBar(context, Text('Mismatch system: $system'));
|
||||||
}
|
}
|
||||||
// For security reason, delete the private key file after use
|
// For security reason, delete the private key file after use
|
||||||
if (shouldGenKey) {
|
if (shouldGenKey) {
|
||||||
|
if (!await file.exists()) return;
|
||||||
await Future.delayed(const Duration(seconds: 2), file.delete);
|
await Future.delayed(const Duration(seconds: 2), file.delete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user