mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
opt.: route
This commit is contained in:
@@ -1,10 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|
||||||
import 'package:toolbox/core/analysis.dart';
|
import 'package:toolbox/core/analysis.dart';
|
||||||
import 'package:toolbox/data/model/server/private_key_info.dart';
|
import 'package:toolbox/data/model/server/private_key_info.dart';
|
||||||
import 'package:toolbox/data/model/server/server_private_info.dart';
|
import 'package:toolbox/data/model/server/server_private_info.dart';
|
||||||
import 'package:toolbox/data/provider/server.dart';
|
|
||||||
import 'package:toolbox/locator.dart';
|
|
||||||
import 'package:toolbox/view/page/backup.dart';
|
import 'package:toolbox/view/page/backup.dart';
|
||||||
import 'package:toolbox/view/page/docker.dart';
|
import 'package:toolbox/view/page/docker.dart';
|
||||||
import 'package:toolbox/view/page/home.dart';
|
import 'package:toolbox/view/page/home.dart';
|
||||||
@@ -32,7 +29,6 @@ import '../view/page/snippet/edit.dart';
|
|||||||
import '../view/page/snippet/list.dart';
|
import '../view/page/snippet/list.dart';
|
||||||
import '../view/page/storage/sftp.dart';
|
import '../view/page/storage/sftp.dart';
|
||||||
import '../view/page/storage/sftp_mission.dart';
|
import '../view/page/storage/sftp_mission.dart';
|
||||||
import 'utils/ui.dart';
|
|
||||||
|
|
||||||
class AppRoute {
|
class AppRoute {
|
||||||
final Widget page;
|
final Widget page;
|
||||||
@@ -48,17 +44,14 @@ class AppRoute {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<T?> checkClientAndGo<T>({
|
Future<T?> checkGo<T>({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required S s,
|
required bool Function() check,
|
||||||
required String id,
|
|
||||||
}) {
|
}) {
|
||||||
final server = locator<ServerProvider>().servers[id];
|
if (check()) {
|
||||||
if (server == null || server.client == null) {
|
return go(context);
|
||||||
showSnackBar(context, Text(s.waitConnection));
|
|
||||||
return Future.value(null);
|
|
||||||
}
|
}
|
||||||
return go(context);
|
return Future.value(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
static AppRoute serverDetail({Key? key, required ServerPrivateInfo spi}) {
|
static AppRoute serverDetail({Key? key, required ServerPrivateInfo spi}) {
|
||||||
|
|||||||
@@ -36,17 +36,15 @@ class ServerFuncBtns extends StatelessWidget {
|
|||||||
) async {
|
) async {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case ServerTabMenuType.pkg:
|
case ServerTabMenuType.pkg:
|
||||||
AppRoute.pkg(spi: spi).checkClientAndGo(
|
AppRoute.pkg(spi: spi).checkGo(
|
||||||
context: context,
|
context: context,
|
||||||
s: s,
|
check: () => _checkClient(context, spi.id),
|
||||||
id: spi.id,
|
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case ServerTabMenuType.sftp:
|
case ServerTabMenuType.sftp:
|
||||||
AppRoute.sftp(spi: spi).checkClientAndGo(
|
AppRoute.sftp(spi: spi).checkGo(
|
||||||
context: context,
|
context: context,
|
||||||
s: s,
|
check: () => _checkClient(context, spi.id),
|
||||||
id: spi.id,
|
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case ServerTabMenuType.snippet:
|
case ServerTabMenuType.snippet:
|
||||||
@@ -80,17 +78,15 @@ class ServerFuncBtns extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ServerTabMenuType.docker:
|
case ServerTabMenuType.docker:
|
||||||
AppRoute.docker(spi: spi).checkClientAndGo(
|
AppRoute.docker(spi: spi).checkGo(
|
||||||
context: context,
|
context: context,
|
||||||
s: s,
|
check: () => _checkClient(context, spi.id),
|
||||||
id: spi.id,
|
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case ServerTabMenuType.process:
|
case ServerTabMenuType.process:
|
||||||
AppRoute(ProcessPage(spi: spi), 'process page').checkClientAndGo(
|
AppRoute(ProcessPage(spi: spi), 'process page').checkGo(
|
||||||
context: context,
|
context: context,
|
||||||
s: s,
|
check: () => _checkClient(context, spi.id),
|
||||||
id: spi.id,
|
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case ServerTabMenuType.terminal:
|
case ServerTabMenuType.terminal:
|
||||||
@@ -162,4 +158,13 @@ class ServerFuncBtns extends StatelessWidget {
|
|||||||
await Future.delayed(const Duration(seconds: 2), file.delete);
|
await Future.delayed(const Duration(seconds: 2), file.delete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _checkClient(BuildContext context, String id) {
|
||||||
|
final server = locator<ServerProvider>().servers[id];
|
||||||
|
if (server == null || server.client == null) {
|
||||||
|
showSnackBar(context, Text(s.waitConnection));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user