From 7db38114d92d4aa392491a8e62d551e380ddc56e Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 15 Dec 2025 04:28:58 -0800 Subject: [PATCH] =?UTF-8?q?fix(profile):=20=E4=BF=AE=E5=A4=8D=E4=BC=9E?= =?UTF-8?q?=E4=B8=8B=E6=A0=91=E5=9B=BE=E5=B1=85=E4=B8=AD=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9B=E6=9B=B4=E5=90=8D=E6=8F=90=E6=AC=BE/=E8=BD=AC?= =?UTF-8?q?=E8=B4=A6=E4=B8=BA=E6=8F=90=E5=8F=96/=E8=BD=AC=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 LayoutBuilder 获取实际容器宽度计算节点显示 - 修改兑换页面按钮文字从"提款/转账"改为"提取/转动" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../presentation/widgets/team_tree_widget.dart | 13 ++++++++----- .../trading/presentation/pages/trading_page.dart | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/frontend/mobile-app/lib/features/profile/presentation/widgets/team_tree_widget.dart b/frontend/mobile-app/lib/features/profile/presentation/widgets/team_tree_widget.dart index 805d4f86..1894256c 100644 --- a/frontend/mobile-app/lib/features/profile/presentation/widgets/team_tree_widget.dart +++ b/frontend/mobile-app/lib/features/profile/presentation/widgets/team_tree_widget.dart @@ -79,19 +79,22 @@ class _TeamTreeWidgetState extends State { static const double nodeHorizontalSpacing = 12.0; static const double nodeVerticalSpacing = 40.0; + // 当前容器宽度(由 LayoutBuilder 传递) + double _containerWidth = 0; + @override Widget build(BuildContext context) { return LayoutBuilder( builder: (context, constraints) { // 使用实际容器宽度而不是屏幕宽度 - final containerWidth = constraints.maxWidth; + _containerWidth = constraints.maxWidth; return SingleChildScrollView( scrollDirection: Axis.horizontal, child: SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints( - minWidth: containerWidth, + minWidth: _containerWidth, ), child: Center( child: Padding( @@ -110,9 +113,9 @@ class _TeamTreeWidgetState extends State { Widget _buildTreeLevel(List nodes, int level) { if (nodes.isEmpty) return const SizedBox.shrink(); - // 计算屏幕可以显示的最大节点数 - final screenWidth = MediaQuery.of(context).size.width - 32; // 减去左右padding - final maxVisibleNodes = ((screenWidth + nodeHorizontalSpacing) / (nodeWidth + nodeHorizontalSpacing)).floor(); + // 使用容器实际宽度计算最大节点数(减去 padding) + final availableWidth = _containerWidth - 16; // 减去左右 padding (8*2) + final maxVisibleNodes = ((availableWidth + nodeHorizontalSpacing) / (nodeWidth + nodeHorizontalSpacing)).floor().clamp(1, 100); // 分离需要显示的节点和隐藏的节点 List visibleNodes; diff --git a/frontend/mobile-app/lib/features/trading/presentation/pages/trading_page.dart b/frontend/mobile-app/lib/features/trading/presentation/pages/trading_page.dart index 67f41e06..e07abdec 100644 --- a/frontend/mobile-app/lib/features/trading/presentation/pages/trading_page.dart +++ b/frontend/mobile-app/lib/features/trading/presentation/pages/trading_page.dart @@ -262,7 +262,7 @@ class _TradingPageState extends ConsumerState { // 分隔线 _buildDivider(), const SizedBox(height: 24), - // 提款/转账按钮 + // 提取/转动按钮 _buildWithdrawButton(), const SizedBox(height: 8), // USDT余额显示 @@ -518,7 +518,7 @@ class _TradingPageState extends ConsumerState { ); } - /// 构建提款/转账按钮 + /// 构建提取/转动按钮 /// 当 USDT 余额为 0 时禁用 Widget _buildWithdrawButton() { // 余额为0时禁用 @@ -560,7 +560,7 @@ class _TradingPageState extends ConsumerState { ), const SizedBox(width: 8), Text( - '提款 / 转账', + '提取 / 转动', style: TextStyle( fontSize: 16, fontFamily: 'Inter',