opt.: linux/win window size & server reconnect

This commit is contained in:
lollipopkit
2023-10-22 15:47:22 +08:00
parent 86c6b149d7
commit 02be466954
12 changed files with 37 additions and 22 deletions

View File

@@ -0,0 +1,27 @@
import 'package:flutter/foundation.dart';
// ignore: prefer_void_to_null
class RebuildNode implements ValueListenable<Null> {
final List<VoidCallback> _listeners = [];
RebuildNode();
@override
void addListener(VoidCallback listener) {
_listeners.add(listener);
}
@override
void removeListener(VoidCallback listener) {
_listeners.remove(listener);
}
void rebuild() {
for (var listener in _listeners) {
listener();
}
}
@override
Null get value => null;
}

View File

@@ -10,6 +10,10 @@ class Server implements TagPickable {
SSHClient? client;
ServerState state;
/// Whether is generating client.
/// Use this to avoid reconnecting if last connect try not finished.
bool isGenerating = false;
Server(this.spi, this.status, this.client, this.state);
@override

View File

@@ -267,7 +267,9 @@ class ServerProvider extends ChangeNotifier {
final time1 = DateTime.now();
try {
try {
if (s.isGenerating) return;
s.isGenerating = true;
s.client = await genClient(
spi,
timeout: Stores.setting.timeoutD,
@@ -282,6 +284,8 @@ class ServerProvider extends ChangeNotifier {
/// In order to keep privacy, print [spi.name] instead of [spi.id]
Loggers.app.warning('Connect to ${spi.name} failed', e);
return;
} finally {
s.isGenerating = false;
}
final time2 = DateTime.now();

View File

@@ -0,0 +1,7 @@
import 'package:toolbox/data/model/app/rebuild.dart';
class RebuildNodes {
const RebuildNodes._();
static final app = RebuildNode();
}