From 5993231c2a0fe067e22667bb5d859a2b3c025c93 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Fri, 15 Mar 2024 19:01:24 -0600 Subject: [PATCH] opt. & fix --- lib/view/page/setting/entry.dart | 14 ++++++-------- lib/view/page/ssh/tab.dart | 23 +++++++++++++++++++++++ lib/view/widget/choice_chip.dart | 9 ++++----- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 19e12c9b..e7a2435e 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -244,13 +244,10 @@ class _SettingPageState extends State { Widget _buildAppColor() { return ListTile( trailing: ClipOval( - child: ValueListenableBuilder( - valueListenable: _setting.primaryColor.listenable(), - builder: (_, val, __) => Container( - color: Color(val), - height: 27, - width: 27, - ), + child: Container( + color: primaryColor, + height: 27, + width: 27, ), ), title: Text(l10n.primaryColorSeed), @@ -279,7 +276,7 @@ class _SettingPageState extends State { icon: Icons.colorize, ), ColorPicker( - color: primaryColor, + color: Color(_setting.primaryColor.fetch()), onColorChanged: (c) => ctrl.text = c.toHex, ) ]); @@ -311,6 +308,7 @@ class _SettingPageState extends State { primaryColor = color; _setting.primaryColor.put(color.value); context.pop(); + context.pop(); RebuildNodes.app.rebuild(); } diff --git a/lib/view/page/ssh/tab.dart b/lib/view/page/ssh/tab.dart index 29020a6f..37f5ecd0 100644 --- a/lib/view/page/ssh/tab.dart +++ b/lib/view/page/ssh/tab.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/locale.dart'; +import 'package:toolbox/core/route.dart'; import 'package:toolbox/data/provider/server.dart'; import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/ui.dart'; @@ -25,6 +26,7 @@ class _SSHTabPageState extends State length: _tabIds.length, vsync: this, ); + final _fabRN = ValueNotifier(0); @override Widget build(BuildContext context) { @@ -36,8 +38,21 @@ class _SSHTabPageState extends State isScrollable: true, tabAlignment: TabAlignment.start, dividerColor: Colors.transparent, + onTap: (value) => _fabRN.value = value, ), body: _buildBody(), + floatingActionButton: ListenableBuilder( + listenable: _fabRN, + builder: (_, __) { + if (_fabRN.value == 0) return const SizedBox(); + return FloatingActionButton( + onPressed: () => AppRoute.serverEdit().go(context), + tooltip: l10n.addAServer, + heroTag: 'server', + child: const Icon(Icons.add), + ); + }, + ), ); } @@ -83,6 +98,14 @@ class _SSHTabPageState extends State Widget _buildAddPage() { return Center( child: Consumer(builder: (_, pro, __) { + if (pro.serverOrder.isEmpty) { + return Center( + child: Text( + l10n.serverTabEmpty, + textAlign: TextAlign.center, + ), + ); + } return ListView.builder( padding: const EdgeInsets.all(7), itemBuilder: (_, idx) { diff --git a/lib/view/widget/choice_chip.dart b/lib/view/widget/choice_chip.dart index d43a88a0..463ad700 100644 --- a/lib/view/widget/choice_chip.dart +++ b/lib/view/widget/choice_chip.dart @@ -15,14 +15,13 @@ class ChoiceChipX extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(3), - child: ChoiceChip( + return ChoiceChip( label: Text(label), side: BorderSide.none, + padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 1), + labelPadding: const EdgeInsets.symmetric(horizontal: 5), selected: state.selected(value), onSelected: state.onSelected(value), - ), - ); + ); } }