feat: K线图升级为flutter_chen_kchart,性能更优交互更流畅

This commit is contained in:
2026-04-07 22:35:39 +08:00
parent beda32aa50
commit fda1b0ef52
88 changed files with 43172 additions and 43020 deletions

View File

@@ -1,5 +1,5 @@
import 'package:flutter/foundation.dart';
import 'package:k_chart/entity/k_line_entity.dart';
import 'package:flutter_chen_kchart/k_chart.dart';
import '../models/candle.dart';
/// 时间周期
@@ -25,6 +25,8 @@ class IndicatorSettings {
final bool showMACD;
final bool showKDJ;
final bool showRSI;
final bool showWR;
final bool showCCI;
const IndicatorSettings({
this.showMA = true,
@@ -34,6 +36,8 @@ class IndicatorSettings {
this.showMACD = true,
this.showKDJ = false,
this.showRSI = false,
this.showWR = false,
this.showCCI = false,
});
IndicatorSettings copyWith({
@@ -44,6 +48,8 @@ class IndicatorSettings {
bool? showMACD,
bool? showKDJ,
bool? showRSI,
bool? showWR,
bool? showCCI,
}) {
return IndicatorSettings(
showMA: showMA ?? this.showMA,
@@ -53,6 +59,8 @@ class IndicatorSettings {
showMACD: showMACD ?? this.showMACD,
showKDJ: showKDJ ?? this.showKDJ,
showRSI: showRSI ?? this.showRSI,
showWR: showWR ?? this.showWR,
showCCI: showCCI ?? this.showCCI,
);
}
}

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:k_chart/flutter_k_chart.dart';
import 'package:flutter_chen_kchart/k_chart.dart';
import 'package:provider/provider.dart';
import 'package:shadcn_ui/shadcn_ui.dart';
import '../../../core/theme/app_spacing.dart';
@@ -77,8 +77,10 @@ class ChartPage extends StatelessWidget {
return KChartWidget(
provider.klineData,
ChartStyle(),
chartColors,
chartStyle: ChartStyle(),
chartColors: chartColors,
enableTheme: true,
controller: KChartController(),
mainState: _getMainState(provider),
secondaryState: _getSecondaryState(provider),
volHidden: !provider.indicators.showVOL,
@@ -88,6 +90,9 @@ class ChartPage extends StatelessWidget {
return false;
},
isTrendLine: false,
minScale: 0.1,
maxScale: 5.0,
scaleSensitivity: 2.5,
);
},
),
@@ -108,7 +113,7 @@ class ChartPage extends StatelessWidget {
if (provider.indicators.showBOLL) {
return MainState.BOLL;
} else if (provider.indicators.showEMA) {
return MainState.MA; // k_chart 只有 MA 和 BOLL
return MainState.MA;
} else if (provider.indicators.showMA) {
return MainState.MA;
}
@@ -122,6 +127,10 @@ class ChartPage extends StatelessWidget {
return SecondaryState.KDJ;
} else if (provider.indicators.showRSI) {
return SecondaryState.RSI;
} else if (provider.indicators.showWR) {
return SecondaryState.WR;
} else if (provider.indicators.showCCI) {
return SecondaryState.CCI;
}
return SecondaryState.MACD;
}
@@ -249,7 +258,7 @@ class ChartPage extends StatelessWidget {
Widget _buildIndicatorTabs(BuildContext context, ChartProvider provider) {
final colorScheme = context.colors;
final mainIndicators = ['MA', 'EMA', 'BOLL'];
final secondaryIndicators = ['MACD', 'KDJ', 'RSI', 'VOL'];
final secondaryIndicators = ['MACD', 'KDJ', 'RSI', 'WR', 'CCI', 'VOL'];
return Container(
height: 36,
@@ -295,6 +304,8 @@ class ChartPage extends StatelessWidget {
case 'MACD': return provider.indicators.showMACD;
case 'KDJ': return provider.indicators.showKDJ;
case 'RSI': return provider.indicators.showRSI;
case 'WR': return provider.indicators.showWR;
case 'CCI': return provider.indicators.showCCI;
case 'VOL': return provider.indicators.showVOL;
default: return false;
}
@@ -321,6 +332,8 @@ class ChartPage extends StatelessWidget {
showMACD: label == 'MACD',
showKDJ: label == 'KDJ',
showRSI: label == 'RSI',
showWR: label == 'WR',
showCCI: label == 'CCI',
));
}