wip: null safety
parent
54c6bd9817
commit
d53ffb4547
|
@ -23,7 +23,7 @@ Future<void> load({required encrateia.Athlete athlete}) async {
|
|||
await prefs.setString('strava_token_type', athlete.stravaTokenType!);
|
||||
await prefs.setString('strava_refreshToken', athlete.stravaRefreshToken!);
|
||||
|
||||
//FIXME: We don't use the Response yet!
|
||||
// FIXME: We don't use the Response yet!
|
||||
TokenResponse(
|
||||
tokenType: athlete.stravaTokenType!,
|
||||
expiresAt: athlete.stravaExpiresAt!,
|
||||
|
|
|
@ -84,24 +84,24 @@ class MyLineChart extends LineChart {
|
|||
if (powerZones != null) {
|
||||
return NumericExtents(
|
||||
powerZones
|
||||
.map((PowerZone powerZone) => powerZone.lowerLimit)
|
||||
.reduce(min)! *
|
||||
.map((PowerZone powerZone) => powerZone.lowerLimit ?? 0)
|
||||
.reduce(min) *
|
||||
0.9,
|
||||
powerZones
|
||||
.map((PowerZone powerZone) => powerZone.upperLimit)
|
||||
.reduce(max)! *
|
||||
.map((PowerZone powerZone) => powerZone.upperLimit ?? 0)
|
||||
.reduce(max) *
|
||||
1.1);
|
||||
} else if (heartRateZones != null) {
|
||||
return NumericExtents(
|
||||
heartRateZones
|
||||
.map(
|
||||
(HeartRateZone heartRateZone) => heartRateZone.lowerLimit)
|
||||
.reduce(min)! *
|
||||
.map((HeartRateZone heartRateZone) =>
|
||||
heartRateZone.lowerLimit ?? 0)
|
||||
.reduce(min) *
|
||||
0.9,
|
||||
heartRateZones
|
||||
.map(
|
||||
(HeartRateZone heartRateZone) => heartRateZone.upperLimit)
|
||||
.reduce(max)! *
|
||||
.map((HeartRateZone heartRateZone) =>
|
||||
heartRateZone.upperLimit ?? 0)
|
||||
.reduce(max) *
|
||||
1.1);
|
||||
} else if (minimum != null) {
|
||||
return NumericExtents(minimum, maximum!);
|
||||
|
|
|
@ -10,12 +10,13 @@ import '/models/heart_rate_zone_schema.dart';
|
|||
import '/models/lap.dart';
|
||||
import '/models/power_zone.dart';
|
||||
import '/models/power_zone_schema.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
import '/utils/enums.dart';
|
||||
import '/utils/my_bar_chart.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
|
||||
class ActivityBarGraphWidget extends StatefulWidget {
|
||||
const ActivityBarGraphWidget({Key? key,
|
||||
const ActivityBarGraphWidget({
|
||||
Key? key,
|
||||
required this.activity,
|
||||
required this.athlete,
|
||||
}) : super(key: key);
|
||||
|
@ -156,7 +157,8 @@ class _ActivityBarGraphWidgetState extends State<ActivityBarGraphWidget> {
|
|||
MyBarChart(
|
||||
height: 20,
|
||||
value: widget.activity!.avgSpeed!,
|
||||
maximum: _laps.map((Lap lap) => lap.avgSpeed).reduce(max),
|
||||
maximum:
|
||||
_laps.map((Lap lap) => lap.avgSpeed ?? 0).reduce(max),
|
||||
),
|
||||
PQText(value: widget.activity!.avgSpeed, pq: PQ.paceFromSpeed),
|
||||
]),
|
||||
|
@ -166,7 +168,8 @@ class _ActivityBarGraphWidgetState extends State<ActivityBarGraphWidget> {
|
|||
MyBarChart(
|
||||
height: 20,
|
||||
value: lap.avgSpeed!,
|
||||
maximum: _laps.map((Lap lap) => lap.avgSpeed).reduce(max),
|
||||
maximum:
|
||||
_laps.map((Lap lap) => lap.avgSpeed ?? 0).reduce(max),
|
||||
),
|
||||
PQText(value: lap.avgSpeed, pq: PQ.paceFromSpeed),
|
||||
]),
|
||||
|
|
|
@ -5,11 +5,11 @@ import 'package:flutter/material.dart';
|
|||
import '/models/event.dart';
|
||||
import '/models/interval.dart' as encrateia;
|
||||
import '/models/record_list.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
import '/utils/enums.dart';
|
||||
import '/utils/icon_utils.dart';
|
||||
import '/utils/image_utils.dart' as image_utils;
|
||||
import '/utils/my_button.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
import '/widgets/charts/lap_charts/lap_altitude_chart.dart';
|
||||
|
||||
class IntervalAltitudeWidget extends StatefulWidget {
|
||||
|
@ -56,12 +56,12 @@ class _IntervalAltitudeWidgetState extends State<IntervalAltitudeWidget> {
|
|||
child: LapAltitudeChart(
|
||||
records: RecordList<Event>(altitudeRecords),
|
||||
minimum: altitudeRecords
|
||||
.map((Event record) => record.altitude)
|
||||
.reduce(min)!
|
||||
.map((Event record) => record.altitude ?? 0)
|
||||
.reduce(min)
|
||||
.toDouble(),
|
||||
maximum: altitudeRecords
|
||||
.map((Event record) => record.altitude)
|
||||
.reduce(max)!
|
||||
.map((Event record) => record.altitude ?? 0)
|
||||
.reduce(max)
|
||||
.toDouble(),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -5,11 +5,11 @@ import 'package:flutter/material.dart';
|
|||
import '/models/event.dart';
|
||||
import '/models/lap.dart';
|
||||
import '/models/record_list.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
import '/utils/enums.dart';
|
||||
import '/utils/icon_utils.dart';
|
||||
import '/utils/image_utils.dart' as image_utils;
|
||||
import '/utils/my_button.dart';
|
||||
import '/utils/pg_text.dart';
|
||||
import '/widgets/charts/lap_charts/lap_altitude_chart.dart';
|
||||
|
||||
class LapAltitudeWidget extends StatefulWidget {
|
||||
|
@ -56,12 +56,12 @@ class _LapAltitudeWidgetState extends State<LapAltitudeWidget> {
|
|||
child: LapAltitudeChart(
|
||||
records: RecordList<Event>(altitudeRecords),
|
||||
minimum: altitudeRecords
|
||||
.map((Event record) => record.altitude)
|
||||
.reduce(min)!
|
||||
.map((Event record) => record.altitude ?? 0)
|
||||
.reduce(min)
|
||||
.toDouble(),
|
||||
maximum: altitudeRecords
|
||||
.map((Event record) => record.altitude)
|
||||
.reduce(max)!
|
||||
.map((Event record) => record.altitude ?? 0)
|
||||
.reduce(max)
|
||||
.toDouble(),
|
||||
),
|
||||
),
|
||||
|
|
Reference in New Issue