feat: K线图升级为flutter_chen_kchart,性能更优交互更流畅
This commit is contained in:
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user