diff --git a/lib/features/proxy/overview/proxies_overview_page.dart b/lib/features/proxy/overview/proxies_overview_page.dart index 8304395f..dfa49942 100644 --- a/lib/features/proxy/overview/proxies_overview_page.dart +++ b/lib/features/proxy/overview/proxies_overview_page.dart @@ -127,10 +127,37 @@ class ProxiesOverviewPage extends HookConsumerWidget with PresLogger { ), ], ), - floatingActionButton: FloatingActionButton( - onPressed: () async => notifier.urlTest(group.tag), - tooltip: t.proxies.delayTestTooltip, - child: const Icon(FluentIcons.arrow_clockwise_24_filled), + floatingActionButton: Builder( + builder: (context) { + final theme = Theme.of(context); + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + theme.colorScheme.primary, + theme.colorScheme.primary.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: theme.colorScheme.primary.withOpacity(0.4), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: FloatingActionButton( + onPressed: () async => notifier.urlTest(group.tag), + tooltip: t.proxies.delayTestTooltip, + backgroundColor: Colors.transparent, + elevation: 0, + child: const Icon(FluentIcons.arrow_clockwise_24_filled), + ), + ); + }, ), ); diff --git a/lib/features/proxy/widget/proxy_tile.dart b/lib/features/proxy/widget/proxy_tile.dart index 3c4b4963..7a55b951 100644 --- a/lib/features/proxy/widget/proxy_tile.dart +++ b/lib/features/proxy/widget/proxy_tile.dart @@ -20,14 +20,19 @@ class ProxyTile extends HookConsumerWidget with PresLogger { Widget build(BuildContext context, WidgetRef ref) { final theme = Theme.of(context); - return ListTile( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - title: Text( - proxy.name, - overflow: TextOverflow.ellipsis, - style: TextStyle(fontFamily: FontFamily.emoji), - ), - leading: Padding( + return Card( + elevation: selected ? 3 : 1, + shadowColor: selected ? theme.colorScheme.primary.withOpacity(0.3) : null, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + margin: const EdgeInsets.symmetric(horizontal: 4, vertical: 3), + child: ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 4), + title: Text( + proxy.name, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontFamily: FontFamily.emoji), + ), + leading: Padding( padding: const EdgeInsets.symmetric(vertical: 8), child: Container( width: 6, @@ -58,22 +63,23 @@ class ProxyTile extends HookConsumerWidget with PresLogger { ) : null, selected: selected, - onTap: onSelect, - onLongPress: () async { - showDialog( - context: context, - builder: (context) => AlertDialog( - content: SelectionArea(child: Text(proxy.name)), - actions: [ - TextButton( - onPressed: Navigator.of(context).pop, - child: Text(MaterialLocalizations.of(context).closeButtonLabel), - ), - ], - ), - ); - }, - horizontalTitleGap: 4, + onTap: onSelect, + onLongPress: () async { + showDialog( + context: context, + builder: (context) => AlertDialog( + content: SelectionArea(child: Text(proxy.name)), + actions: [ + TextButton( + onPressed: Navigator.of(context).pop, + child: Text(MaterialLocalizations.of(context).closeButtonLabel), + ), + ], + ), + ); + }, + horizontalTitleGap: 4, + ), ); }