diff --git a/lib/core/route.dart b/lib/core/route.dart index bb0e9997..6324a87b 100644 --- a/lib/core/route.dart +++ b/lib/core/route.dart @@ -1,10 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:toolbox/core/analysis.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/provider/server.dart'; -import 'package:toolbox/locator.dart'; import 'package:toolbox/view/page/backup.dart'; import 'package:toolbox/view/page/docker.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/storage/sftp.dart'; import '../view/page/storage/sftp_mission.dart'; -import 'utils/ui.dart'; class AppRoute { final Widget page; @@ -48,17 +44,14 @@ class AppRoute { ); } - Future checkClientAndGo({ + Future checkGo({ required BuildContext context, - required S s, - required String id, + required bool Function() check, }) { - final server = locator().servers[id]; - if (server == null || server.client == null) { - showSnackBar(context, Text(s.waitConnection)); - return Future.value(null); + if (check()) { + return go(context); } - return go(context); + return Future.value(null); } static AppRoute serverDetail({Key? key, required ServerPrivateInfo spi}) { diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index b11160f9..13072df2 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -36,17 +36,15 @@ class ServerFuncBtns extends StatelessWidget { ) async { switch (value) { case ServerTabMenuType.pkg: - AppRoute.pkg(spi: spi).checkClientAndGo( + AppRoute.pkg(spi: spi).checkGo( context: context, - s: s, - id: spi.id, + check: () => _checkClient(context, spi.id), ); break; case ServerTabMenuType.sftp: - AppRoute.sftp(spi: spi).checkClientAndGo( + AppRoute.sftp(spi: spi).checkGo( context: context, - s: s, - id: spi.id, + check: () => _checkClient(context, spi.id), ); break; case ServerTabMenuType.snippet: @@ -80,17 +78,15 @@ class ServerFuncBtns extends StatelessWidget { } break; case ServerTabMenuType.docker: - AppRoute.docker(spi: spi).checkClientAndGo( + AppRoute.docker(spi: spi).checkGo( context: context, - s: s, - id: spi.id, + check: () => _checkClient(context, spi.id), ); break; case ServerTabMenuType.process: - AppRoute(ProcessPage(spi: spi), 'process page').checkClientAndGo( + AppRoute(ProcessPage(spi: spi), 'process page').checkGo( context: context, - s: s, - id: spi.id, + check: () => _checkClient(context, spi.id), ); break; case ServerTabMenuType.terminal: @@ -162,4 +158,13 @@ class ServerFuncBtns extends StatelessWidget { await Future.delayed(const Duration(seconds: 2), file.delete); } } + + bool _checkClient(BuildContext context, String id) { + final server = locator().servers[id]; + if (server == null || server.client == null) { + showSnackBar(context, Text(s.waitConnection)); + return false; + } + return true; + } }