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);