mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix: tags dialog
This commit is contained in:
@@ -87,7 +87,7 @@ class _ServerPageState extends State<ServerPage>
|
|||||||
appBar: TagSwitcher(
|
appBar: TagSwitcher(
|
||||||
tags: ServerProvider.tags,
|
tags: ServerProvider.tags,
|
||||||
onTagChanged: (p0) => _tag.value = p0,
|
onTagChanged: (p0) => _tag.value = p0,
|
||||||
tag: _tag,
|
initTag: _tag.value,
|
||||||
),
|
),
|
||||||
body: GestureDetector(
|
body: GestureDetector(
|
||||||
behavior: HitTestBehavior.opaque,
|
behavior: HitTestBehavior.opaque,
|
||||||
@@ -647,7 +647,7 @@ ${ss.err?.message ?? 'null'}
|
|||||||
|
|
||||||
List<String> _filterServers(List<String> order) {
|
List<String> _filterServers(List<String> order) {
|
||||||
final tag = _tag.value;
|
final tag = _tag.value;
|
||||||
if (tag.isEmpty) return order;
|
if (tag == kDefaultTag) return order;
|
||||||
return order.where((e) {
|
return order.where((e) {
|
||||||
final tags = ServerProvider.pick(id: e)?.value.spi.tags;
|
final tags = ServerProvider.pick(id: e)?.value.spi.tags;
|
||||||
if (tags == null) return false;
|
if (tags == null) return false;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class _SnippetListPageState extends State<SnippetListPage> {
|
|||||||
appBar: TagSwitcher(
|
appBar: TagSwitcher(
|
||||||
tags: SnippetProvider.tags,
|
tags: SnippetProvider.tags,
|
||||||
onTagChanged: (tag) => _tag.value = tag,
|
onTagChanged: (tag) => _tag.value = tag,
|
||||||
tag: _tag,
|
initTag: _tag.value,
|
||||||
),
|
),
|
||||||
body: _buildBody(),
|
body: _buildBody(),
|
||||||
floatingActionButton: FloatingActionButton(
|
floatingActionButton: FloatingActionButton(
|
||||||
@@ -36,24 +36,21 @@ class _SnippetListPageState extends State<SnippetListPage> {
|
|||||||
Widget _buildBody() {
|
Widget _buildBody() {
|
||||||
return SnippetProvider.snippets.listenVal(
|
return SnippetProvider.snippets.listenVal(
|
||||||
(snippets) {
|
(snippets) {
|
||||||
if (snippets.isEmpty) {
|
if (snippets.isEmpty) return Center(child: Text(libL10n.empty));
|
||||||
return Center(child: Text(libL10n.empty));
|
|
||||||
}
|
|
||||||
|
|
||||||
return _tag.listenVal((tag) => _buildSnippetList(snippets, tag));
|
return _tag.listenVal((tag) => _buildSnippetList(snippets, tag));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildSnippetList(List<Snippet> snippets, String tag) {
|
Widget _buildSnippetList(List<Snippet> snippets, String tag) {
|
||||||
final filtered = tag.isEmpty
|
final filtered = tag == kDefaultTag
|
||||||
? snippets
|
? snippets
|
||||||
: snippets.where((e) => e.tags?.contains(tag) ?? false).toList();
|
: snippets.where((e) => e.tags?.contains(tag) ?? false).toList();
|
||||||
|
|
||||||
return ReorderableListView.builder(
|
return ReorderableListView.builder(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 11),
|
padding: const EdgeInsets.symmetric(horizontal: 9),
|
||||||
itemCount: filtered.length,
|
itemCount: filtered.length,
|
||||||
onReorder: (oldIdx, newIdx) => setState(() {
|
onReorder: (oldIdx, newIdx) {
|
||||||
snippets.moveByItem(
|
snippets.moveByItem(
|
||||||
oldIdx,
|
oldIdx,
|
||||||
newIdx,
|
newIdx,
|
||||||
@@ -62,7 +59,8 @@ class _SnippetListPageState extends State<SnippetListPage> {
|
|||||||
Stores.setting.snippetOrder.put(p0.map((e) => e.name).toList());
|
Stores.setting.snippetOrder.put(p0.map((e) => e.name).toList());
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}),
|
SnippetProvider.snippets.notify();
|
||||||
|
},
|
||||||
footer: UIs.height77,
|
footer: UIs.height77,
|
||||||
buildDefaultDragHandles: false,
|
buildDefaultDragHandles: false,
|
||||||
itemBuilder: (context, idx) {
|
itemBuilder: (context, idx) {
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ class SSHPageState extends State<SSHPage>
|
|||||||
title: l10n.snippet,
|
title: l10n.snippet,
|
||||||
tags: SnippetProvider.tags,
|
tags: SnippetProvider.tags,
|
||||||
itemsBuilder: (e) {
|
itemsBuilder: (e) {
|
||||||
if (e == null) return SnippetProvider.snippets.value;
|
if (e == kDefaultTag) return SnippetProvider.snippets.value;
|
||||||
return SnippetProvider.snippets.value
|
return SnippetProvider.snippets.value
|
||||||
.where((element) => element.tags?.contains(e) ?? false)
|
.where((element) => element.tags?.contains(e) ?? false)
|
||||||
.toList();
|
.toList();
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ void _onTapMoreBtns(
|
|||||||
title: l10n.snippet,
|
title: l10n.snippet,
|
||||||
tags: SnippetProvider.tags,
|
tags: SnippetProvider.tags,
|
||||||
itemsBuilder: (e) {
|
itemsBuilder: (e) {
|
||||||
if (e == null) return SnippetProvider.snippets.value;
|
if (e == kDefaultTag) return SnippetProvider.snippets.value;
|
||||||
return SnippetProvider.snippets.value
|
return SnippetProvider.snippets.value
|
||||||
.where((element) => element.tags?.contains(e) ?? false)
|
.where((element) => element.tags?.contains(e) ?? false)
|
||||||
.toList();
|
.toList();
|
||||||
|
|||||||
@@ -390,8 +390,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "v1.0.141"
|
ref: "v1.0.142"
|
||||||
resolved-ref: "2fb1532cd2fd08dd807e9776b2b50b5d8ee94388"
|
resolved-ref: "0860beabd5096dd5f783d8c60b860c81895477dd"
|
||||||
url: "https://github.com/lppcg/fl_lib"
|
url: "https://github.com/lppcg/fl_lib"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ dependencies:
|
|||||||
fl_lib:
|
fl_lib:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/lppcg/fl_lib
|
url: https://github.com/lppcg/fl_lib
|
||||||
ref: v1.0.141
|
ref: v1.0.142
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
# dartssh2:
|
# dartssh2:
|
||||||
|
|||||||
Reference in New Issue
Block a user