This repository has been archived on 2024-03-27. You can view files and clone it, but cannot push or open issues/pull-requests.
encrateia/lib/widgets/charts/activity_charts/activity_leg_spring_stiffne...

68 lines
2.3 KiB
Dart

import 'package:charts_flutter/flutter.dart';
import 'package:encrateia/models/athlete.dart';
import 'package:encrateia/models/record_list.dart';
import 'package:flutter/material.dart';
import 'package:encrateia/models/activity.dart';
import 'package:encrateia/models/event.dart';
import 'package:encrateia/models/lap.dart';
import 'package:encrateia/models/plot_point.dart';
import 'package:encrateia/utils/graph_utils.dart';
import 'package:encrateia/utils/my_line_chart.dart';
import 'package:encrateia/utils/enums.dart';
class ActivityLegSpringStiffnessChart extends StatelessWidget {
const ActivityLegSpringStiffnessChart({
this.records,
@required this.activity,
@required this.athlete,
});
final RecordList<Event> records;
final Activity activity;
final Athlete athlete;
@override
Widget build(BuildContext context) {
final List<DoublePlotPoint> smoothedRecords = records.toDoubleDataPoints(
attribute: LapDoubleAttr.legSpringStiffness,
amount: athlete.db.recordAggregationCount,
);
final List<Series<DoublePlotPoint, int>> data =
<Series<DoublePlotPoint, int>>[
Series<DoublePlotPoint, int>(
id: 'Leg spring stiffness',
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
domainFn: (DoublePlotPoint record, _) => record.domain,
measureFn: (DoublePlotPoint record, _) => record.measure,
data: smoothedRecords,
)
];
return FutureBuilder<List<Lap>>(
future: activity.laps,
builder: (BuildContext context, AsyncSnapshot<List<Lap>> snapshot) {
if (snapshot.hasData) {
final List<Lap> laps = snapshot.data;
return Container(
height: 300,
child: MyLineChart(
data: data,
maxDomain: records.last.distance,
laps: laps,
domainTitle: 'Leg Spring Stiffness (kN/m)',
measureTickProviderSpec: const BasicNumericTickProviderSpec(
zeroBound: false,
dataIsInWholeNumbers: true,
desiredTickCount: 5),
domainTickProviderSpec:
const BasicNumericTickProviderSpec(desiredTickCount: 6),
),
);
} else
return GraphUtils.loadingContainer;
},
);
}
}