From e2853483f76628d9c2be90ad03b03b34b0a49411 Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Tue, 2 Dec 2025 22:21:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 2 +- lib/pages/home_page.dart | 21 +++++++++++++++++++-- lib/pages/record_page.dart | 1 - lib/service/health_service.dart | 15 ++++++++------- lib/widget/record/goal_progress.dart | 2 ++ lib/widget/record/record_daily.dart | 25 ++++++++++++------------- 6 files changed, 42 insertions(+), 24 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 9b7ecdc..b411d4a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,7 +14,7 @@ void main() async { Hive.registerAdapter(HealthRecordAdapter()); final healthsBox = await Hive.openBox('healths'); - healthsBox.clear(); + // healthsBox.clear(); // await Hive.deleteBoxFromDisk('healths'); runApp( diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 1d1f521..9893d38 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -1,6 +1,9 @@ import 'package:fitnote/layout/app_navbar.dart'; import 'package:fitnote/models/menu.dart'; +import 'package:fitnote/provider/health_provider.dart'; +import 'package:fitnote/service/health_service.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @@ -28,7 +31,8 @@ class _HomePageState extends State { Widget _buildLeading() { return Builder( builder: - (context) => IconButton( + (context) => + IconButton( icon: Icon(Icons.menu, color: Colors.white), onPressed: () => Scaffold.of(context).openDrawer(), ), @@ -47,6 +51,9 @@ class _HomePageState extends State { controller: _pageController, onPageChanged: (index) { setState(() { + if (index == 0) { + _refreshRecord(); + } _currentPageIndex = index; }); }, @@ -54,6 +61,13 @@ class _HomePageState extends State { ); } + void _refreshRecord() { + final HealthService service = HealthService(); + final provider = context.read(); + provider.updateSelectDate(DateTime.now()); + provider.updateRecord(service.getRecordByDate(provider.selectedDate)); + } + void _onTapNavbarItem(int index) { setState(() { _currentPageIndex = index; @@ -82,7 +96,10 @@ class _HomePageState extends State { return Scaffold( appBar: AppBar( title: _buildAppBarTitle(), - backgroundColor: Theme.of(context).colorScheme.primary, + backgroundColor: Theme + .of(context) + .colorScheme + .primary, elevation: 0, leading: _buildLeading(), ), diff --git a/lib/pages/record_page.dart b/lib/pages/record_page.dart index a557fd5..c9b58ba 100644 --- a/lib/pages/record_page.dart +++ b/lib/pages/record_page.dart @@ -25,7 +25,6 @@ class _RecordPageState extends State { return weekdays[weekday - 1]; } - @override Widget build(BuildContext context) { return SingleChildScrollView( diff --git a/lib/service/health_service.dart b/lib/service/health_service.dart index 519153a..4d48cf5 100644 --- a/lib/service/health_service.dart +++ b/lib/service/health_service.dart @@ -93,18 +93,19 @@ class HealthService { Future updateRecord(HealthRecord record) async { try { - print(record.date); - final existingRecords = - box.values.where((item) => item.date == record.date).toList(); + final existingRecords = box.values.toList(); + final index = existingRecords.indexWhere((item) => item.date == record.date); - if (existingRecords.isEmpty) { - await addRecord(record); + if (index == -1) { + await box.add(record); } else { - await record.save(); + final key = box.keyAt(index); + await box.put(key, record); } + return true; } catch (e) { - print(e.toString()); + print('Update record error: $e'); return false; } } diff --git a/lib/widget/record/goal_progress.dart b/lib/widget/record/goal_progress.dart index dd3ffe5..361ead6 100644 --- a/lib/widget/record/goal_progress.dart +++ b/lib/widget/record/goal_progress.dart @@ -33,6 +33,8 @@ class _GoalProgressState extends State { provider.totalSpot = service.getTotalSport(); provider.avgSleep = service.getAvgSleep(); provider.latestWeight = service.getLatestWeight(); + + provider.updateRecord(service.getRecordByDate(provider.selectedDate)); }); } diff --git a/lib/widget/record/record_daily.dart b/lib/widget/record/record_daily.dart index b82a847..5327412 100644 --- a/lib/widget/record/record_daily.dart +++ b/lib/widget/record/record_daily.dart @@ -21,17 +21,7 @@ class RecordDaily extends StatefulWidget { class _RecordDailyState extends State { final HealthService service = HealthService(); - - @override - void initState() { - super.initState(); - - WidgetsBinding.instance.addPostFrameCallback((_) { - final provider = context.read(); - provider.currentRecord = service.getRecordByDate(provider.selectedDate); - }); - } - + @override Widget build(BuildContext context) { return CommonCard( @@ -260,8 +250,17 @@ class _RecordDailyState extends State { void _saveRecord() async { final provider = context.read(); - provider.formItem.date = formatDate(provider.selectedDate); - await service.updateRecord(provider.formItem); + + final newRecord = HealthRecord( + date: formatDate(provider.selectedDate), + weight: provider.formItem.weight, + sportProject: provider.formItem.sportProject, + sportDuration: provider.formItem.sportDuration, + sleepStartTime: provider.formItem.sleepStartTime, + sleepEndTime: provider.formItem.sleepEndTime, + ); + + await service.updateRecord(newRecord); provider.updateRecord(service.getRecordByDate(provider.selectedDate));