Я новичок в флаттере и мне интересно, как реализовать отслеживание прогресса в течение 7 или 30 дней / чтобы уточнить, что я имею в виду: скажем, я хочу отслеживать ежедневно сожженные калории, поэтому теперь у меня есть переменная, которая равна int CLB = caloriesBurned, тогда мой вопрос в том, как чтобы получить ежедневное значение CLB и сохранить его ... аналогично отслеживанию Google Fit, которое каждый день в течение 30 дней отслеживает шаги и сохраняет их ... затем отображает их в диаграмме.
я использую Hive в качестве локального хранилища данных, чтобы сохранить повседневную ценность, и я буду использовать пакет fl_chart.
я знаю, что будет много обсуждений, но мне нужен только способ, как я могу каждый день хранить данные одной и той же переменной (что означает, что в начале дня она будет сброшена до значения 0, чтобы отслеживать новые дневные калории), любые подсказки или ключевые слова, которые помогут мне искать в Интернете, как именно это реализовать?





Если вы хотите отслеживать прогресс в течение определенного количества дней, например, 7 или 30, вам необходимо хранить данные за каждый день. Вы уже используете Hive для хранения своих данных, поэтому мы можем использовать его для хранения вашего ежедневного прогресса.
Вот что вы можете сделать:
Создайте ящик Hive для хранения ваших ежедневных данных. Коробка похожа на контейнер для хранения ваших данных в Hive. Вы можете создать коробку с этим кодом:
final dailyCaloriesBox = await Hive.openBox('dailyCalories');
Каждый день создавайте новую запись в поле Hive, чтобы сохранять сожженные калории. Вы можете использовать этот код для создания новой записи:
final now = DateTime.now();
final key = '${now.year}-${now.month}-${now.day}';
final caloriesBurned = 500; // Replace this with your actual calories burned value.
dailyCaloriesBox.put(key, caloriesBurned);
Чтобы отобразить данные на диаграмме, вы можете получить данные из поля Hive и использовать их для построения диаграммы. Вы можете использовать метод запроса поля Hive, чтобы получить все записи в поле:
final entries = dailyCaloriesBox.query();
Вы можете использовать пакет fl_chart для создания диаграммы из данных. Вот пример кода для создания простой линейной диаграммы:
LineChartData(
lineBarsData: [
LineChartBarData(
spots: entries.map((entry) {
final dateParts = entry.key.split('-');
final x = DateTime(int.parse(dateParts[0]), int.parse(dateParts[1]), int.parse(dateParts[2]));
return FlSpot(x.millisecondsSinceEpoch.toDouble(), entry.value.toDouble());
}).toList(),
isCurved: true,
colors: [Colors.blue],
),
],
minX: DateTime.now().subtract(Duration(days: 6)).millisecondsSinceEpoch.toDouble(),
maxX: DateTime.now().millisecondsSinceEpoch.toDouble(),
minY: 0,
)
Этот код создаст линейную диаграмму, показывающую сожженные калории за последние 7 дней.