diff --git a/lib/helpers/charts.dart b/lib/helpers/charts.dart index 64a0b6e8..1a4b1574 100644 --- a/lib/helpers/charts.dart +++ b/lib/helpers/charts.dart @@ -1,5 +1,9 @@ +import 'consts.dart'; + double chartGetInterval(DateTime first, DateTime last, {divider = 3}) { final dayDiff = last.difference(first); - return dayDiff.inMilliseconds == 0 ? 1000 : dayDiff.inMilliseconds.abs() / divider; + return dayDiff.inMilliseconds == 0 + ? CHART_MILLISECOND_FACTOR + : dayDiff.inMilliseconds.abs() / divider; } diff --git a/lib/helpers/consts.dart b/lib/helpers/consts.dart index 2470f646..d2e0760d 100644 --- a/lib/helpers/consts.dart +++ b/lib/helpers/consts.dart @@ -124,3 +124,9 @@ const MASTODON_URL = 'https://fosstodon.org/@wger'; const WEBLATE_URL = 'https://hosted.weblate.org/engage/wger'; const BUY_ME_A_COFFEE_URL = 'https://buymeacoffee.com/wger'; const LIBERAPAY_URL = 'https://liberapay.com/wger'; + +/// Factor to multiply / divide in the charts when converting dates to milliseconds +/// from epoch since fl_charts does not support real time series charts and using +/// the milliseconds themselves can cause the application to crash since it runs +/// out of memory... +const double CHART_MILLISECOND_FACTOR = 100000.0; diff --git a/lib/widgets/measurements/charts.dart b/lib/widgets/measurements/charts.dart index 1e59623e..62ee1d4a 100644 --- a/lib/widgets/measurements/charts.dart +++ b/lib/widgets/measurements/charts.dart @@ -20,6 +20,7 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:wger/helpers/charts.dart'; +import 'package:wger/helpers/consts.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; class MeasurementOverallChangeWidget extends StatelessWidget { @@ -142,7 +143,7 @@ class _MeasurementChartWidgetFlState extends State { widget._entries.last.date, widget._entries.first.date, ) - : 1000, + : CHART_MILLISECOND_FACTOR, ), ), leftTitles: AxisTitles( diff --git a/lib/widgets/measurements/helpers.dart b/lib/widgets/measurements/helpers.dart index 111be02f..3881b3a7 100644 --- a/lib/widgets/measurements/helpers.dart +++ b/lib/widgets/measurements/helpers.dart @@ -78,13 +78,15 @@ List getOverviewWidgetsSeries( mainAxisAlignment: MainAxisAlignment.center, children: [ Indicator( - color: Theme.of(context).colorScheme.primary, - text: AppLocalizations.of(context).indicatorRaw, - isSquare: true), + color: Theme.of(context).colorScheme.primary, + text: AppLocalizations.of(context).indicatorRaw, + isSquare: true, + ), Indicator( - color: Theme.of(context).colorScheme.tertiary, - text: AppLocalizations.of(context).indicatorAvg, - isSquare: true), + color: Theme.of(context).colorScheme.tertiary, + text: AppLocalizations.of(context).indicatorAvg, + isSquare: true, + ), ], ), ]; diff --git a/lib/widgets/routines/charts.dart b/lib/widgets/routines/charts.dart index f0cf66cf..7d5e3321 100644 --- a/lib/widgets/routines/charts.dart +++ b/lib/widgets/routines/charts.dart @@ -112,7 +112,7 @@ class _LogChartWidgetFlState extends State { : DateTime.now(), widget._data.containsKey(widget._data.keys.last) && widget._data[widget._data.keys.last]!.isNotEmpty - ? widget._data[widget._data.keys.last]!.first.date + ? widget._data[widget._data.keys.last]!.last.date : DateTime.now(), // widget._data[widget._data.keys.first]!.first.date, // widget._data[widget._data.keys.last]!.first.date,