buildGraph method
Implementation
@override
Widget buildGraph(BuildContext context) {
final processedData = processNumberData(variable, timeWindow, referenceTime);
final List<ChartData> chartData = processedData.chartData;
final DateTimeIntervalType dateIntervalFormat = processedData.dateIntervalFormat;
final DateFormat dateFormat = processedData.dateFormat;
final String labelFormat = processedData.labelFormat;
final double interval = processedData.interval;
final bool showAxis = processedData.showAxis;
final double maxY = processedData.maxY;
final double minY = processedData.minY;
final DateTime minX = processedData.minX;
final DateTime maxX = processedData.maxX;
// Add custom grid appearance for ECG look
return SfCartesianChart(
enableAxisAnimation: false,
primaryXAxis: DateTimeAxis(
interval: interval,
minimum: minX,
maximum: maxX,
intervalType: dateIntervalFormat,
edgeLabelPlacement: EdgeLabelPlacement.shift,
labelStyle: const TextStyle(fontSize: 10),
majorTickLines: const MajorTickLines(size: 4),
axisBorderType: AxisBorderType.withoutTopAndBottom,
axisLine: const AxisLine(width: 1, color: Colors.grey),
majorGridLines: const MajorGridLines(
width: 0.5,
color: Colors.grey,
dashArray: <double>[5, 5],
),
isVisible: showAxis,
labelFormat: labelFormat,
dateFormat: dateFormat,
),
primaryYAxis: NumericAxis(
isVisible: false,
maximum: maxY * 1.1,
minimum: minY * 1.1,
interval: (maxY - minY) / 4,
axisLine: const AxisLine(width: 1, color: Colors.grey),
majorGridLines: const MajorGridLines(
width: 0.5,
color: Colors.grey,
dashArray: <double>[5, 5],
),
labelStyle: const TextStyle(fontSize: 10),
),
plotAreaBorderWidth: 0,
series: [buildSeries(context, chartData)],
// Add vertical line tracker
trackballBehavior: TrackballBehavior(
enable: true,
activationMode: ActivationMode.singleTap,
tooltipSettings: const InteractiveTooltip(
enable: true,
format: 'point.y mV',
),
lineType: TrackballLineType.vertical,
lineWidth: 1,
lineColor: Colors.grey,
),
);
}