diff --git a/lib/features/proxy/active/active_proxy_footer.dart b/lib/features/proxy/active/active_proxy_footer.dart index ef175940..1714360a 100644 --- a/lib/features/proxy/active/active_proxy_footer.dart +++ b/lib/features/proxy/active/active_proxy_footer.dart @@ -143,34 +143,30 @@ class _InfoProp extends StatelessWidget { } class IPWidget extends StatefulWidget { - final String text1; - final String text2; - - IPWidget(String text) - : text1 = _replaceMiddlePart(text), - text2 = text, - super(key: UniqueKey()); - static String _replaceMiddlePart(String ip) { - RegExp regex = RegExp( - r'^([\da-f]+([:.]))([\da-f:.]*)([:.][\da-f]+)$', - caseSensitive: false, - ); - - return ip.replaceAllMapped(regex, (match) { - return '${match[1]} ░ ${match[2]} ░ ${match[4]}'; - }); - } + final String text; + final TextStyle? style; + IPWidget(this.text, {this.style}) : super(key: UniqueKey()); @override _IPWidgetState createState() => _IPWidgetState(); } class _IPWidgetState extends State { - bool isText1Visible = true; + bool isFullIPVisible = true; void toggleVisibility() { setState(() { - isText1Visible = !isText1Visible; + isFullIPVisible = !isFullIPVisible; + }); + } + + static String _replaceMiddlePart(String ip) { + RegExp regex = RegExp( + r'^([\da-f]+([:.]))([\da-f:.]*)([:.][\da-f]+)$', + caseSensitive: false, + ); + return ip.replaceAllMapped(regex, (match) { + return '${match[1]} ░ ${match[2]} ░ ${match[4]}'; }); } @@ -179,8 +175,9 @@ class _IPWidgetState extends State { return GestureDetector( onTap: toggleVisibility, child: Text( - isText1Visible ? widget.text1 : widget.text2, + isFullIPVisible ? _replaceMiddlePart(widget.text) : widget.text, overflow: TextOverflow.ellipsis, + style: widget.style, ), ); } diff --git a/lib/features/proxy/active/active_proxy_sidebar_card.dart b/lib/features/proxy/active/active_proxy_sidebar_card.dart index a3302e42..a5ffd4c2 100644 --- a/lib/features/proxy/active/active_proxy_sidebar_card.dart +++ b/lib/features/proxy/active/active_proxy_sidebar_card.dart @@ -6,6 +6,7 @@ import 'package:flutter_animate/flutter_animate.dart'; import 'package:gap/gap.dart'; import 'package:hiddify/core/localization/translations.dart'; import 'package:hiddify/core/widget/skeleton_widget.dart'; +import 'package:hiddify/features/proxy/active/active_proxy_footer.dart'; import 'package:hiddify/features/proxy/active/active_proxy_notifier.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -30,11 +31,7 @@ class ActiveProxySideBarCard extends HookConsumerWidget { final asyncState = ref.watch(activeProxyNotifierProvider); Widget propText(String txt) { - return Text( - txt, - overflow: TextOverflow.ellipsis, - style: theme.textTheme.bodySmall, - ); + return IPWidget(txt, style: theme.textTheme.bodySmall); } return Theme(