Флаттер отслеживания прогресса в течение 30 дней

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

я знаю, что будет много обсуждений, но мне нужен только способ, как я могу каждый день хранить данные одной и той же переменной (что означает, что в начале дня она будет сброшена до значения 0, чтобы отслеживать новые дневные калории), любые подсказки или ключевые слова, которые помогут мне искать в Интернете, как именно это реализовать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите отслеживать прогресс в течение определенного количества дней, например, 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 дней.

Другие вопросы по теме