diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index de7379d1..98650021 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -470,7 +470,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -478,7 +478,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -602,7 +602,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -610,7 +610,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -628,7 +628,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -636,7 +636,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -657,7 +657,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -670,7 +670,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -696,7 +696,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -709,7 +709,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -732,7 +732,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -745,7 +745,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 612e43ec..a320407e 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,8 +2,8 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 461; + static const int build = 471; static const String engine = "3.10.6"; - static const String buildAt = "2023-08-11 11:41:48.137847"; + static const String buildAt = "2023-08-13 22:48:32.724672"; static const int modifications = 6; } diff --git a/lib/data/res/ui.dart b/lib/data/res/ui.dart index 5b167e8e..dda846b9 100644 --- a/lib/data/res/ui.dart +++ b/lib/data/res/ui.dart @@ -22,6 +22,8 @@ final appIcon = Image.asset('assets/app_icon.png'); const roundRectCardPadding = EdgeInsets.symmetric(horizontal: 17, vertical: 13); /// SizedBox + +const placeholder = SizedBox(); const height13 = SizedBox(height: 13); const width13 = SizedBox(width: 13); const width7 = SizedBox(width: 7); diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index ce9b4768..857067b4 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:nil/nil.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/core/route.dart'; @@ -337,7 +336,7 @@ class _DockerManagePageState extends State { } Widget _buildLoading() { - if (_docker.runLog == null) return nil; + if (_docker.runLog == null) return placeholder; return Padding( padding: const EdgeInsets.all(17), child: Column( diff --git a/lib/view/page/full_screen.dart b/lib/view/page/full_screen.dart index 0eecbd2b..62afdb35 100644 --- a/lib/view/page/full_screen.dart +++ b/lib/view/page/full_screen.dart @@ -6,7 +6,6 @@ import 'package:circle_chart/circle_chart.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:get_it/get_it.dart'; -import 'package:nil/nil.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/route.dart'; import 'package:toolbox/data/model/server/disk.dart'; @@ -148,7 +147,7 @@ class _FullScreenPageState extends State with AfterLayoutMixin { final id = pro.serverOrder[idx]; final s = pro.servers[id]; if (s == null) { - return nil; + return Center(child: Text(_s.noClient)); } return _buildRealServerCard(s.status, s.state, s.spi); }, diff --git a/lib/view/page/pkg.dart b/lib/view/page/pkg.dart index 0fe0051a..5c67c798 100644 --- a/lib/view/page/pkg.dart +++ b/lib/view/page/pkg.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:nil/nil.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/view/widget/input_field.dart'; @@ -132,9 +131,9 @@ class _PkgManagePageState extends State return _textController.text.trim(); } - Widget _buildFAB(PkgProvider pkg) { + Widget? _buildFAB(PkgProvider pkg) { if (pkg.upgradeable?.isEmpty ?? true) { - return nil; + return null; } return FloatingActionButton( onPressed: () { diff --git a/lib/view/page/private_key/edit.dart b/lib/view/page/private_key/edit.dart index f8d41f2c..ad048e96 100644 --- a/lib/view/page/private_key/edit.dart +++ b/lib/view/page/private_key/edit.dart @@ -5,7 +5,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:nil/nil.dart'; import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/core/extension/numx.dart'; import 'package:toolbox/core/utils/misc.dart'; @@ -43,7 +42,7 @@ class _PrivateKeyEditPageState extends State late PrivateKeyProvider _provider; late S _s; - Widget _loading = nil; + Widget? _loading; @override void initState() { @@ -124,7 +123,7 @@ class _PrivateKeyEditPageState extends State rethrow; } finally { setState(() { - _loading = nil; + _loading = null; }); } context.pop(); @@ -196,7 +195,7 @@ class _PrivateKeyEditPageState extends State icon: Icons.password, ), SizedBox(height: MediaQuery.of(context).size.height * 0.1), - _loading + _loading ?? placeholder, ], ); } diff --git a/lib/view/page/private_key/list.dart b/lib/view/page/private_key/list.dart index a8850cbc..91c8e37e 100644 --- a/lib/view/page/private_key/list.dart +++ b/lib/view/page/private_key/list.dart @@ -24,7 +24,8 @@ class PrivateKeysListPage extends StatefulWidget { _PrivateKeyListState createState() => _PrivateKeyListState(); } -class _PrivateKeyListState extends State with AfterLayoutMixin { +class _PrivateKeyListState extends State + with AfterLayoutMixin { late S _s; @override @@ -115,7 +116,7 @@ class _PrivateKeyListState extends State with AfterLayoutMi ); } } - + @override FutureOr afterFirstLayout(BuildContext context) { autoAddSystemPriavteKey(); diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index a7b2a830..82c4e9ed 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:nil/nil.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/order.dart'; import 'package:toolbox/data/model/server/cpu.dart'; @@ -249,7 +248,7 @@ class _ServerDetailPageState extends State } Widget _buildSwapView(ServerStatus ss) { - if (ss.swap.total == 0) return nil; + if (ss.swap.total == 0) return placeholder; final used = ss.swap.usedPercent * 100; final cached = ss.swap.cached / ss.swap.total * 100; return RoundRectCard( @@ -408,7 +407,7 @@ class _ServerDetailPageState extends State Widget _buildTemperature(ServerStatus ss) { final temps = ss.temps; if (temps.isEmpty) { - return nil; + return placeholder; } final List children = [ const Row( diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 8ea01b11..c890b2e7 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -5,7 +5,6 @@ import 'package:circle_chart/circle_chart.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:get_it/get_it.dart'; -import 'package:nil/nil.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/order.dart'; import 'package:toolbox/data/model/app/net_view.dart'; @@ -121,6 +120,7 @@ class _ServerPageState extends State initTag: _tag, all: _s.all, ), + footer: const SizedBox(height: 77), padding: const EdgeInsets.fromLTRB(7, 10, 7, 7), onReorder: (oldIndex, newIndex) => setState(() { pro.serverOrder.moveByItem( @@ -145,7 +145,7 @@ class _ServerPageState extends State Widget _buildEachServerCard(Server? si) { if (si == null) { - return nil; + return placeholder; } return GestureDetector( key: Key(si.spi.id + (_tag ?? '')), @@ -491,7 +491,7 @@ class _ServerPageState extends State Future gotoSSH(ServerPrivateInfo spi) async { // as a `Mobile first` app -> handle mobile first - // + // // run built-in ssh on macOS due to incompatibility if (!isDesktop || isMacOS) { AppRoute(SSHPage(spi: spi), 'ssh page').go(context); diff --git a/lib/view/widget/tag/switcher.dart b/lib/view/widget/tag/switcher.dart index ded962ff..2a56d06e 100644 --- a/lib/view/widget/tag/switcher.dart +++ b/lib/view/widget/tag/switcher.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:nil/nil.dart'; +import 'package:toolbox/data/res/ui.dart'; import 'package:toolbox/view/widget/fade_in.dart'; import 'package:toolbox/view/widget/tag/view.dart'; @@ -21,7 +21,7 @@ class TagSwitcher extends StatelessWidget { @override Widget build(BuildContext context) { - if (tags.isEmpty) return nil; + if (tags.isEmpty) return placeholder; final items = [null, ...tags]; return Container( height: 37, diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index a172689e..948eeba3 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -475,9 +475,9 @@ baseConfigurationReference = C1C758C41C4E208965A68933 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -490,9 +490,9 @@ baseConfigurationReference = 15AF97DF993E8968098D6EBE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -505,9 +505,9 @@ baseConfigurationReference = 7CFA7DE7FABA75685DFB6948 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 461; + CURRENT_PROJECT_VERSION = 471; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.461; + MARKETING_VERSION = 1.0.471; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/pubspec.lock b/pubspec.lock index b3c29148..47dae241 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -558,14 +558,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" - nil: - dependency: "direct main" - description: - name: nil - sha256: ef05770c48942876d843bf6a4822d35e5da0ff893a61f1d5ad96d15c4a659136 - url: "https://pub.dev" - source: hosted - version: "1.1.1" package_config: dependency: transitive description: @@ -1056,7 +1048,7 @@ packages: description: path: "." ref: master - resolved-ref: f289cc3d3fd264598c0bbf413da08ba599c00ef9 + resolved-ref: "475bd72d5e3f75d7c2323225e931f71145cafc2e" url: "https://github.com/lollipopkit/xterm.dart" source: git version: "3.6.1-pre" diff --git a/pubspec.yaml b/pubspec.yaml index 5abf48d0..b7133021 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,7 +64,6 @@ dependencies: highlight: ^0.7.0 flutter_highlight: ^0.7.0 code_text_field: ^1.1.0 - nil: ^1.1.1 shared_preferences: ^2.1.1 crypto: ^3.0.3