From 6924290626d4a95344f125d5a37d57d8fecd2da0 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Wed, 20 Dec 2023 11:34:18 +0800 Subject: [PATCH] opt. --- analysis_options.yaml | 3 ++ ios/Runner.xcodeproj/project.pbxproj | 36 ++++++++-------- lib/core/build_mode.dart | 4 +- lib/core/extension/stringx.dart | 14 +++++++ lib/core/utils/platform/base.dart | 59 +++++++++------------------ lib/core/utils/sync/webdav.dart | 1 + lib/core/utils/ui.dart | 2 +- lib/data/model/server/disk.dart | 4 +- lib/data/model/sftp/req.dart | 8 ++-- lib/data/model/sftp/worker.dart | 2 +- lib/data/res/build_data.dart | 6 +-- lib/view/page/docker.dart | 44 ++++++++++---------- lib/view/page/full_screen.dart | 2 +- lib/view/page/server/tab.dart | 2 +- lib/view/page/setting/entry.dart | 2 +- lib/view/page/storage/local.dart | 8 ++-- lib/view/page/storage/sftp.dart | 4 +- lib/view/widget/omit_start_text.dart | 4 +- lib/view/widget/server_func_btns.dart | 2 +- lib/view/widget/store_switch.dart | 2 +- 20 files changed, 104 insertions(+), 105 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 266705d3..2c7afe2b 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -24,6 +24,9 @@ linter: rules: library_private_types_in_public_api: false use_build_context_synchronously: false + prefer_final_locals: true + unnecessary_parenthesis: true + implicit_call_tearoffs: true # avoid_print: false # Uncomment to disable the `avoid_print` rule # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index fd96bf59..a0b5204a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -586,7 +586,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -596,7 +596,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -720,7 +720,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -730,7 +730,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -748,7 +748,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -758,7 +758,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -779,7 +779,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -792,7 +792,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -818,7 +818,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -831,7 +831,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -854,7 +854,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -867,7 +867,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -890,7 +890,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -902,7 +902,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -931,7 +931,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -943,7 +943,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -969,7 +969,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 682; + CURRENT_PROJECT_VERSION = 683; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -981,7 +981,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.682; + MARKETING_VERSION = 1.0.683; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/core/build_mode.dart b/lib/core/build_mode.dart index 7fb28efb..1cc8f982 100644 --- a/lib/core/build_mode.dart +++ b/lib/core/build_mode.dart @@ -6,7 +6,7 @@ enum _BuildMode { profile, } -final _buildMode = (() { +final _buildMode = () { if (const bool.fromEnvironment('dart.vm.product')) { return _BuildMode.release; } @@ -16,7 +16,7 @@ final _buildMode = (() { return true; }()); return result; -}()); +}(); class BuildMode { static bool isDebug = (_buildMode == _BuildMode.debug); diff --git a/lib/core/extension/stringx.dart b/lib/core/extension/stringx.dart index 62f1bb96..8473a9bf 100644 --- a/lib/core/extension/stringx.dart +++ b/lib/core/extension/stringx.dart @@ -15,4 +15,18 @@ extension StringX on String { } Uint8List get uint8List => Uint8List.fromList(utf8.encode(this)); + + /// Upper the first letter. + String get upperFirst { + if (isEmpty) { + return this; + } + final runes = codeUnits; + if (runes[0] >= 97 && runes[0] <= 122) { + final origin = String.fromCharCode(runes[0]); + final upper = origin.toUpperCase(); + return replaceFirst(origin, upper); + } + return this; + } } diff --git a/lib/core/utils/platform/base.dart b/lib/core/utils/platform/base.dart index 73a4b988..bbc711c0 100644 --- a/lib/core/utils/platform/base.dart +++ b/lib/core/utils/platform/base.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; +import 'package:toolbox/core/extension/stringx.dart'; enum OS { android, @@ -12,7 +13,7 @@ enum OS { fuchsia, unknown; - static final _os = () { + static final type = () { if (kIsWeb) { return OS.web; } @@ -37,48 +38,26 @@ enum OS { return OS.unknown; }(); - static OS get type => _os; - @override - String toString() { - switch (this) { - case OS.android: - return 'Android'; - case OS.ios: - return 'iOS'; - case OS.linux: - return 'Linux'; - case OS.macos: - return 'macOS'; - case OS.windows: - return 'Windows'; - case OS.web: - return 'Web'; - case OS.fuchsia: - return 'Fuchsia'; - case OS.unknown: - return 'Unknown'; - } - } + String toString() => switch (this) { + OS.macos => 'macOS', + OS.ios => 'iOS', + final val => val.name.upperFirst, + }; /// Whether has platform specific settings. - static bool get hasSettings { - switch (type) { - case OS.android: - case OS.ios: - return true; - default: - return false; - } - } + static final hasSpecSetting = switch (type) { + OS.android || OS.ios => true, + _ => false, + }; } -bool get isAndroid => OS.type == OS.android; -bool get isIOS => OS.type == OS.ios; -bool get isLinux => OS.type == OS.linux; -bool get isMacOS => OS.type == OS.macos; -bool get isWindows => OS.type == OS.windows; -bool get isWeb => OS.type == OS.web; -bool get isMobile => OS.type == OS.ios || OS.type == OS.android; -bool get isDesktop => +final isAndroid = OS.type == OS.android; +final isIOS = OS.type == OS.ios; +final isLinux = OS.type == OS.linux; +final isMacOS = OS.type == OS.macos; +final isWindows = OS.type == OS.windows; +final isWeb = OS.type == OS.web; +final isMobile = OS.type == OS.ios || OS.type == OS.android; +final isDesktop = OS.type == OS.linux || OS.type == OS.macos || OS.type == OS.windows; diff --git a/lib/core/utils/sync/webdav.dart b/lib/core/utils/sync/webdav.dart index a47332d0..6da83263 100644 --- a/lib/core/utils/sync/webdav.dart +++ b/lib/core/utils/sync/webdav.dart @@ -9,6 +9,7 @@ import 'package:toolbox/data/res/store.dart'; import 'package:webdav_client/webdav_client.dart'; abstract final class Webdav { + /// Some WebDAV provider only support non-root path static const _prefix = 'srvbox/'; static var _client = WebdavClient( diff --git a/lib/core/utils/ui.dart b/lib/core/utils/ui.dart index c52f582b..068f81f8 100644 --- a/lib/core/utils/ui.dart +++ b/lib/core/utils/ui.dart @@ -30,7 +30,7 @@ Future loadFontFile(String localPath) async { if (name == null) return; final file = File(localPath); if (!await file.exists()) return; - var fontLoader = FontLoader(name); + final fontLoader = FontLoader(name); fontLoader.addFont(file.readAsBytes().byteData); await fontLoader.load(); } diff --git a/lib/data/model/server/disk.dart b/lib/data/model/server/disk.dart index 2b66122f..e3a2dab5 100644 --- a/lib/data/model/server/disk.dart +++ b/lib/data/model/server/disk.dart @@ -37,8 +37,8 @@ class DiskIO extends TimeSeq { final sectorsRead = now.sectorsRead - pre.sectorsRead; final sectorsWrite = now.sectorsWrite - pre.sectorsWrite; final time = now.time - pre.time; - final read = (sectorsRead / time * 512); - final write = (sectorsWrite / time * 512); + final read = sectorsRead / time * 512; + final write = sectorsWrite / time * 512; return (read, write); } diff --git a/lib/data/model/sftp/req.dart b/lib/data/model/sftp/req.dart index 845053e7..493c5a6d 100644 --- a/lib/data/model/sftp/req.dart +++ b/lib/data/model/sftp/req.dart @@ -77,19 +77,19 @@ class SftpReqStatus { void onNotify(dynamic event) { var shouldDispose = false; switch (event) { - case SftpWorkerStatus val: + case final SftpWorkerStatus val: status = val; if (status == SftpWorkerStatus.finished) { dispose(); } break; - case double val: + case final double val: progress = val; break; - case int val: + case final int val: size = val; break; - case Duration d: + case final Duration d: spentTime = d; break; default: diff --git a/lib/data/model/sftp/worker.dart b/lib/data/model/sftp/worker.dart index 3171d8e1..f2f333fb 100644 --- a/lib/data/model/sftp/worker.dart +++ b/lib/data/model/sftp/worker.dart @@ -56,7 +56,7 @@ Future isolateMessageHandler( SendErrorFunction sendError, ) async { switch (data) { - case SftpReq val: + case final SftpReq val: switch (val.type) { case SftpReqType.download: await _download(data, mainSendPort, sendError); diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 691ac9ff..03a26791 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,9 +2,9 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 682; + static const int build = 683; static const String engine = "3.16.4"; - static const String buildAt = "2023-12-19 15:18:22"; - static const int modifications = 10; + static const String buildAt = "2023-12-19 15:25:07"; + static const int modifications = 1; static const int script = 32; } diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index cdc0480d..35e9a931 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -34,11 +34,12 @@ class DockerManagePage extends StatefulWidget { class _DockerManagePageState extends State { final _textController = TextEditingController(); + final _docker = Pros.docker; @override void dispose() { super.dispose(); - Pros.docker.clear(); + _docker.clear(); _textController.dispose(); } @@ -49,7 +50,7 @@ class _DockerManagePageState extends State { if (client == null) { return; } - Pros.docker + _docker ..init( client, widget.spi.user, @@ -71,7 +72,7 @@ class _DockerManagePageState extends State { IconButton( onPressed: () async { context.showLoadingDialog(); - await Pros.docker.refresh(); + await _docker.refresh(); context.pop(); }, icon: const Icon(Icons.refresh), @@ -79,7 +80,7 @@ class _DockerManagePageState extends State { ], ), body: _buildMain(), - floatingActionButton: Pros.docker.error == null ? _buildFAB() : null, + floatingActionButton: _docker.error == null ? _buildFAB() : null, ); }); } @@ -156,7 +157,7 @@ class _DockerManagePageState extends State { onPressed: () async { context.pop(); context.showLoadingDialog(); - final result = await Pros.docker.run(cmd); + final result = await _docker.run(cmd); context.pop(); if (result != null) { context.showSnackBar(result.message ?? l10n.unknownError); @@ -182,7 +183,7 @@ class _DockerManagePageState extends State { } Widget _buildMain() { - if (Pros.docker.error != null && Pros.docker.items == null) { + if (_docker.error != null && _docker.items == null) { return SizedBox.expand( child: Column( mainAxisAlignment: MainAxisAlignment.center, @@ -193,18 +194,18 @@ class _DockerManagePageState extends State { size: 37, ), const SizedBox(height: 27), - Text(Pros.docker.error?.message ?? l10n.unknownError), + Text(_docker.error?.message ?? l10n.unknownError), const SizedBox(height: 27), Padding( padding: const EdgeInsets.all(17), - child: _buildSolution(Pros.docker.error!), + child: _buildSolution(_docker.error!), ), _buildEditHost(), ], ), ); } - if (Pros.docker.items == null || Pros.docker.images == null) { + if (_docker.items == null || _docker.images == null) { return UIs.centerLoading; } @@ -225,10 +226,11 @@ class _DockerManagePageState extends State { return ExpandTile( title: Text(l10n.imagesList), subtitle: Text( - l10n.dockerImagesFmt(Pros.docker.images!.length), + l10n.dockerImagesFmt(_docker.images!.length), style: UIs.textGrey, ), - children: Pros.docker.images?.map(_buildImageItem).toList() ?? [], + initiallyExpanded: (_docker.images?.length ?? 0) <= 3, + children: _docker.images?.map(_buildImageItem).toList() ?? [], ); } @@ -280,7 +282,7 @@ class _DockerManagePageState extends State { child: CircularProgressIndicator(), ), UIs.height13, - Text(Pros.docker.runLog ?? '...'), + Text(_docker.runLog ?? '...'), ], ), ); @@ -321,8 +323,8 @@ class _DockerManagePageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(Pros.docker.edition ?? l10n.unknown), - Text(Pros.docker.version ?? l10n.unknown), + Text(_docker.edition ?? l10n.unknown), + Text(_docker.version ?? l10n.unknown), ], ), ); @@ -380,7 +382,7 @@ class _DockerManagePageState extends State { onPressed: () async { context.pop(); context.showLoadingDialog(); - final result = await Pros.docker.delete( + final result = await _docker.delete( dItem.containerId, force, ); @@ -399,7 +401,7 @@ class _DockerManagePageState extends State { break; case DockerMenuType.start: context.showLoadingDialog(); - final result = await Pros.docker.start(dItem.containerId); + final result = await _docker.start(dItem.containerId); context.pop(); if (result != null) { context.showRoundDialog( @@ -410,7 +412,7 @@ class _DockerManagePageState extends State { break; case DockerMenuType.stop: context.showLoadingDialog(); - final result = await Pros.docker.stop(dItem.containerId); + final result = await _docker.stop(dItem.containerId); context.pop(); if (result != null) { context.showRoundDialog( @@ -421,7 +423,7 @@ class _DockerManagePageState extends State { break; case DockerMenuType.restart: context.showLoadingDialog(); - final result = await Pros.docker.restart(dItem.containerId); + final result = await _docker.restart(dItem.containerId); context.pop(); if (result != null) { context.showRoundDialog( @@ -476,8 +478,8 @@ class _DockerManagePageState extends State { Widget _buildEditHost() { final children = []; - final emptyImgs = Pros.docker.images?.isEmpty ?? false; - final emptyPs = Pros.docker.items?.isEmpty ?? false; + final emptyImgs = _docker.images?.isEmpty ?? false; + final emptyPs = _docker.items?.isEmpty ?? false; if (emptyPs && emptyImgs) { children.add(Padding( padding: const EdgeInsets.fromLTRB(17, 17, 17, 0), @@ -522,6 +524,6 @@ class _DockerManagePageState extends State { void _onSaveDockerHost(String val) { context.pop(); Stores.docker.put(widget.spi.id, val.trim()); - Pros.docker.refresh(); + _docker.refresh(); } } diff --git a/lib/view/page/full_screen.dart b/lib/view/page/full_screen.dart index 2069537f..f9f582df 100644 --- a/lib/view/page/full_screen.dart +++ b/lib/view/page/full_screen.dart @@ -69,7 +69,7 @@ class _FullScreenPageState extends State with AfterLayoutMixin { double get _offset { // based on screen width final x = _screenWidth * 0.03; - var r = Random().nextDouble(); + final r = Random().nextDouble(); final n = Random().nextBool() ? -1 : 1; return n * x * r; } diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index db86b269..bc6705e0 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -580,7 +580,7 @@ class _ServerPageState extends State if (Stores.setting.moveOutServerTabFuncBtns.fetch() && // Discussion #146 !Stores.setting.serverTabUseOldUI.fetch()) { - return 135; + return 132; } return 106; } diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index b0fd550e..0cdc6ef8 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -181,7 +181,7 @@ class _SettingPageState extends State { ]; /// Platform specific settings - if (OS.hasSettings) { + if (OS.hasSpecSetting) { children.add(_buildPlatformSetting()); } return Column( diff --git a/lib/view/page/storage/local.dart b/lib/view/page/storage/local.dart index 64c0902c..83596eae 100644 --- a/lib/view/page/storage/local.dart +++ b/lib/view/page/storage/local.dart @@ -134,10 +134,10 @@ class _LocalStoragePageState extends State { itemCount: files.length, padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 7), itemBuilder: (context, index) { - var file = files[index]; - var fileName = file.path.split('/').last; - var stat = file.statSync(); - var isDir = stat.type == FileSystemEntityType.directory; + final file = files[index]; + final fileName = file.path.split('/').last; + final stat = file.statSync(); + final isDir = stat.type == FileSystemEntityType.directory; return CardX( child: ListTile( diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index a786d4e1..e8102f21 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -160,7 +160,7 @@ class _SftpPageState extends State with AfterLayoutMixin { Widget _buildAddBtn() { return IconButton( - onPressed: (() => context.showRoundDialog( + onPressed: () => context.showRoundDialog( child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -176,7 +176,7 @@ class _SftpPageState extends State with AfterLayoutMixin { ), ], ), - )), + ), icon: const Icon(Icons.add), ); } diff --git a/lib/view/widget/omit_start_text.dart b/lib/view/widget/omit_start_text.dart index c00231de..84c53748 100644 --- a/lib/view/widget/omit_start_text.dart +++ b/lib/view/widget/omit_start_text.dart @@ -21,13 +21,13 @@ class OmitStartText extends StatelessWidget { int len = 0; for (; !exceeded && len < text.length; len++) { // Build the textspan - var span = TextSpan( + final span = TextSpan( text: 'A' * 7 + text.substring(text.length - len), style: style ?? Theme.of(context).textTheme.bodyMedium, ); // Use a textpainter to determine if it will exceed max lines - var tp = TextPainter( + final tp = TextPainter( maxLines: maxLines ?? 1, textDirection: TextDirection.ltr, text: span, diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index d3cf8cee..4ded59d0 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -205,7 +205,7 @@ Future _gotoSSH( extraArgs.addAll(["-i", path]); } - List sshCommand = ["ssh", "${spi.user}@${spi.ip}"] + extraArgs; + final sshCommand = ["ssh", "${spi.user}@${spi.ip}"] + extraArgs; final system = Platform.operatingSystem; switch (system) { case "windows": diff --git a/lib/view/widget/store_switch.dart b/lib/view/widget/store_switch.dart index 7381edae..5a1698b8 100644 --- a/lib/view/widget/store_switch.dart +++ b/lib/view/widget/store_switch.dart @@ -28,7 +28,7 @@ class StoreSwitch extends StatelessWidget { return Switch( value: value, onChanged: (value) async { - if (validator != null && validator?.call(value) != true) return; + if (validator?.call(value) == false) return; await callback?.call(value); prop.put(value); },