From ccbea74f87758829d60b912cf978ff7033a5575f Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 19 Jan 2026 19:56:30 -0800 Subject: [PATCH] =?UTF-8?q?fix(kline):=20=E7=A8=80=E7=96=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=97=B6=E8=AE=A9=E6=9C=80=E6=96=B0K=E7=BA=BF?= =?UTF-8?q?=E5=B1=85=E4=B8=AD=E8=80=8C=E9=9D=9E=E6=95=B4=E7=BB=84=E5=B1=85?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正居中逻辑:当K线数量少时,让最新的那根K线(最右边)显示在屏幕中央,而不是让整个K线组居中。 Co-Authored-By: Claude Opus 4.5 --- .../widgets/kline_chart/kline_chart_widget.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/mining-app/lib/presentation/widgets/kline_chart/kline_chart_widget.dart b/frontend/mining-app/lib/presentation/widgets/kline_chart/kline_chart_widget.dart index 1cfab765..9c3d9414 100644 --- a/frontend/mining-app/lib/presentation/widgets/kline_chart/kline_chart_widget.dart +++ b/frontend/mining-app/lib/presentation/widgets/kline_chart/kline_chart_widget.dart @@ -583,9 +583,14 @@ class _KlineChartWidgetState extends State { final availableWidth = chartWidth - rightPadding - leftPadding; final totalWidth = widget.klines.length * _candleWidth; - // 计算左侧偏移量:当K线总宽度小于可用宽度时,将K线居中显示 - // 居中偏移 = (可用宽度 - K线总宽度) / 2 - final leftOffset = totalWidth < availableWidth ? (availableWidth - totalWidth) / 2 : 0.0; + // 计算左侧偏移量:当K线总宽度小于可用宽度时,让最新K线(最右边)居中显示 + // 最新K线位置 = totalWidth - candleWidth/2(最后一根K线的中心点) + // 居中偏移 = 屏幕中心 - 最新K线位置 = availableWidth/2 - (totalWidth - candleWidth/2) + double leftOffset = 0.0; + if (totalWidth < availableWidth) { + // 让最新K线居中:偏移量 = 屏幕中心 - 最新K线中心位置 + leftOffset = (availableWidth / 2) - (totalWidth - _candleWidth / 2); + } // 根据滚动位置计算可见的K线范围 final int startIndex = (_scrollX / _candleWidth).floor().clamp(0, widget.klines.length - 1);