From 7d4c30732a2a34784e32530dc4837251dfc43ec2 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Thu, 24 Aug 2023 21:24:27 +0800 Subject: [PATCH] opt. --- lib/data/model/app/tag_pickable.dart | 5 +++++ lib/data/model/server/server.dart | 12 +++++++++++- lib/data/model/server/snippet.dart | 12 +++++++++++- lib/data/res/build_data.dart | 6 +++--- lib/view/page/snippet/list.dart | 2 -- lib/view/widget/server_func_btns.dart | 2 -- lib/view/widget/tag.dart | 19 ++++++++----------- lib/view/widget/url_text.dart | 4 +--- make.dart | 2 +- 9 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 lib/data/model/app/tag_pickable.dart diff --git a/lib/data/model/app/tag_pickable.dart b/lib/data/model/app/tag_pickable.dart new file mode 100644 index 00000000..46b0b87b --- /dev/null +++ b/lib/data/model/app/tag_pickable.dart @@ -0,0 +1,5 @@ +abstract class TagPickable { + bool containsTag(String tag); + + String get tagName; +} diff --git a/lib/data/model/server/server.dart b/lib/data/model/server/server.dart index e6f5740a..452ab204 100644 --- a/lib/data/model/server/server.dart +++ b/lib/data/model/server/server.dart @@ -2,13 +2,23 @@ import 'package:dartssh2/dartssh2.dart'; import 'package:toolbox/data/model/server/server_private_info.dart'; import 'package:toolbox/data/model/server/server_status.dart'; -class Server { +import '../app/tag_pickable.dart'; + +class Server implements TagPickable { ServerPrivateInfo spi; ServerStatus status; SSHClient? client; ServerState state; Server(this.spi, this.status, this.client, this.state); + + @override + bool containsTag(String tag) { + return spi.tags?.contains(tag) ?? false; + } + + @override + String get tagName => spi.id; } enum ServerState { diff --git a/lib/data/model/server/snippet.dart b/lib/data/model/server/snippet.dart index ece8b628..be67d0fa 100644 --- a/lib/data/model/server/snippet.dart +++ b/lib/data/model/server/snippet.dart @@ -1,9 +1,11 @@ import 'package:hive_flutter/hive_flutter.dart'; +import '../app/tag_pickable.dart'; + part 'snippet.g.dart'; @HiveType(typeId: 2) -class Snippet { +class Snippet implements TagPickable { @HiveField(0) late String name; @HiveField(1) @@ -24,4 +26,12 @@ class Snippet { data['tags'] = tags; return data; } + + @override + bool containsTag(String tag) { + return tags?.contains(tag) ?? false; + } + + @override + String get tagName => name; } diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 487aeecd..5d7cb01d 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 = 493; + static const int build = 498; static const String engine = "3.13.0"; - static const String buildAt = "2023-08-22 16:14:41.022063"; - static const int modifications = 8; + static const String buildAt = "2023-08-23 21:54:10.937955"; + static const int modifications = 2; } diff --git a/lib/view/page/snippet/list.dart b/lib/view/page/snippet/list.dart index 69523fb1..97d80a2d 100644 --- a/lib/view/page/snippet/list.dart +++ b/lib/view/page/snippet/list.dart @@ -137,9 +137,7 @@ class _SnippetListPageState extends State { context: context, builder: (_) => TagPicker( items: provider.servers.values.toList(), - containsTag: (t, tag) => t.spi.tags?.contains(tag) ?? false, tags: provider.tags.toSet(), - name: (t) => t.spi.id, ), ); if (servers == null) { diff --git a/lib/view/widget/server_func_btns.dart b/lib/view/widget/server_func_btns.dart index 00a3aed3..7932f170 100644 --- a/lib/view/widget/server_func_btns.dart +++ b/lib/view/widget/server_func_btns.dart @@ -52,9 +52,7 @@ class ServerFuncBtns extends StatelessWidget { context: context, builder: (_) => TagPicker( items: provider.snippets, - containsTag: (t, tag) => t.tags?.contains(tag) ?? false, tags: provider.tags.toSet(), - name: (t) => t.name, ), ); if (snippets == null) { diff --git a/lib/view/widget/tag.dart b/lib/view/widget/tag.dart index 1e19a00e..dea04826 100644 --- a/lib/view/widget/tag.dart +++ b/lib/view/widget/tag.dart @@ -6,6 +6,7 @@ import 'package:toolbox/view/widget/round_rect_card.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import '../../core/utils/ui.dart'; +import '../../data/model/app/tag_pickable.dart'; import '../../data/res/color.dart'; const _kTagBtnHeight = 31.0; @@ -178,17 +179,13 @@ class TagEditor extends StatelessWidget { } } -class TagPicker extends StatefulWidget { +class TagPicker extends StatefulWidget { final List items; - final bool Function(T, String?) containsTag; - final String Function(T) name; final Set tags; const TagPicker({ Key? key, required this.items, - required this.containsTag, - required this.name, required this.tags, }) : super(key: key); @@ -196,7 +193,7 @@ class TagPicker extends StatefulWidget { _TagPickerState createState() => _TagPickerState(); } -class _TagPickerState extends State> { +class _TagPickerState extends State> { late S _s; late MediaQueryData _media; final List _selected = []; @@ -251,19 +248,19 @@ class _TagPickerState extends State> { itemBuilder: (_, idx) { final item = widget.tags.elementAt(idx); final isEnable = - widget.items.where((ele) => widget.containsTag(ele, item)).every( - (element) => _selected.contains(element), + widget.items.where((ele) => ele.containsTag(item)).every( + (ele) => _selected.contains(ele), ); return TagBtn( isEnable: isEnable, onTap: () { if (isEnable) { _selected.removeWhere( - (element) => widget.containsTag(element, item), + (ele) => ele.containsTag(item), ); } else { _selected.addAll(widget.items.where( - (ele) => widget.containsTag(ele, item), + (ele) => ele.containsTag(item), )); } setState(() {}); @@ -290,7 +287,7 @@ class _TagPickerState extends State> { } setState(() {}); }, - content: widget.name(e), + content: e.tagName, ); }, ); diff --git a/lib/view/widget/url_text.dart b/lib/view/widget/url_text.dart index e00722ea..a63c5257 100644 --- a/lib/view/widget/url_text.dart +++ b/lib/view/widget/url_text.dart @@ -70,9 +70,7 @@ class UrlText extends StatelessWidget { widgets.add( TextSpan( text: result.text, - style: style.copyWith( - color: c, - ), + style: style.copyWith(color: c), ), ); } diff --git a/make.dart b/make.dart index 504608a6..df18f5a3 100755 --- a/make.dart +++ b/make.dart @@ -259,7 +259,7 @@ void main(List args) async { for (final func in funcs) { stopwatch.start(); await func(); - print('Build finished in ${stopwatch.elapsed}\n'); + print('Build finished in ${stopwatch.elapsed}'); stopwatch.reset(); } break;