From 602ef60bf05a665843d1a6c0268f0611fdf9d84d Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Wed, 6 Mar 2024 15:33:00 +0800 Subject: [PATCH] opt.: replace `first` with `firstOrNull` --- lib/data/model/app/backup.dart | 2 +- lib/data/model/server/cpu.dart | 3 ++- lib/data/model/server/temp.dart | 2 +- lib/view/page/ping.dart | 2 +- lib/view/page/ssh/page.dart | 3 ++- lib/view/page/storage/sftp.dart | 4 ++-- lib/view/widget/server_func_btns.dart | 4 ++-- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/data/model/app/backup.dart b/lib/data/model/app/backup.dart index a0b45972..a3b5571f 100644 --- a/lib/data/model/app/backup.dart +++ b/lib/data/model/app/backup.dart @@ -70,7 +70,7 @@ class Backup { Backup.loadFromStore() : version = backupFormatVersion, - date = DateTime.now().toString().split('.').first, + date = DateTime.now().toString().split('.').firstOrNull ?? '', spis = Stores.server.fetch(), snippets = Stores.snippet.fetch(), keys = Stores.key.fetch(), diff --git a/lib/data/model/server/cpu.dart b/lib/data/model/server/cpu.dart index 9905c0d6..8d5cb733 100644 --- a/lib/data/model/server/cpu.dart +++ b/lib/data/model/server/cpu.dart @@ -92,7 +92,8 @@ class OneTimeCpuStatus extends TimeSeqIface { for (var item in raw.split('\n')) { if (item == '') break; - final id = item.split(' ').first; + final id = item.split(' ').firstOrNull; + if (id == null) continue; final matches = item.replaceFirst(id, '').trim().split(' '); cpus.add( OneTimeCpuStatus( diff --git a/lib/data/model/server/temp.dart b/lib/data/model/server/temp.dart index 4bd456f5..747f910e 100644 --- a/lib/data/model/server/temp.dart +++ b/lib/data/model/server/temp.dart @@ -50,7 +50,7 @@ class Temperatures { return _map[key]; } } - return _map.values.first; + return _map.values.firstOrNull; } } diff --git a/lib/view/page/ping.dart b/lib/view/page/ping.dart index 556795e8..f0415972 100644 --- a/lib/view/page/ping.dart +++ b/lib/view/page/ping.dart @@ -148,7 +148,7 @@ class _PingPageState extends State if (result.results == null || result.results!.isEmpty) { return '$ip - ${l10n.noResult}'; } - final ttl = result.results?.first.ttl ?? unknown; + final ttl = result.results?.firstOrNull?.ttl ?? unknown; final loss = result.statistic?.loss ?? unknown; final min = result.statistic?.min ?? unknown; final max = result.statistic?.max ?? unknown; diff --git a/lib/view/page/ssh/page.dart b/lib/view/page/ssh/page.dart index 4f8c182a..609f7ff7 100644 --- a/lib/view/page/ssh/page.dart +++ b/lib/view/page/ssh/page.dart @@ -287,7 +287,8 @@ class _SSHPageState extends State with AutomaticKeepAliveClientMixin { ); if (snippets == null || snippets.isEmpty) return; - final snippet = snippets.first; + final snippet = snippets.firstOrNull; + if (snippet == null) return; _terminal.textInput(snippet.script); _terminal.keyInput(TerminalKey.enter); break; diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index 79c736f1..0b39ae44 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -665,7 +665,7 @@ class _SftpPageState extends State with AfterLayoutMixin { /// Issue #97 /// In order to compatible with the Synology NAS /// which not has '.' and '..' in listdir - if (fs.isNotEmpty && fs.first.filename == '.') { + if (fs.isNotEmpty && fs.firstOrNull?.filename == '.') { fs.removeAt(0); } @@ -673,7 +673,7 @@ class _SftpPageState extends State with AfterLayoutMixin { /// Due to [WillPopScope] added in this page /// There is no need to keep '..' folder in listdir /// So remove it - if (fs.isNotEmpty && fs.first.filename == '..') { + if (fs.isNotEmpty && fs.firstOrNull?.filename == '..') { fs.removeAt(0); } if (mounted) { diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index f10c8faf..395d9385 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -135,8 +135,8 @@ void _onTapMoreBtns( name: (e) => e.name, ); if (snippets == null || snippets.isEmpty) return; - final snippet = snippets.first; - + final snippet = snippets.firstOrNull; + if (snippet == null) return; AppRoute.ssh(spi: spi, initCmd: snippet.fmtWith(spi)).checkGo( context: context, check: () => _checkClient(context, spi.id),