mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 23:34:24 +01:00
opt.: linux/win window size & server reconnect
This commit is contained in:
27
lib/data/model/app/rebuild.dart
Normal file
27
lib/data/model/app/rebuild.dart
Normal 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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
7
lib/data/res/rebuild.dart
Normal file
7
lib/data/res/rebuild.dart
Normal file
@@ -0,0 +1,7 @@
|
||||
import 'package:toolbox/data/model/app/rebuild.dart';
|
||||
|
||||
class RebuildNodes {
|
||||
const RebuildNodes._();
|
||||
|
||||
static final app = RebuildNode();
|
||||
}
|
||||
Reference in New Issue
Block a user