From d2c2d4d479a7cd56dab92c0cfc655a7137c3cadc Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 1 Dec 2024 23:33:42 +0300 Subject: [PATCH] feat: diary time of meal --- .../diary/presentation/bloc/diary_cubit.dart | 13 ++++++----- .../presentation/pages/diary_screen.dart | 2 +- .../widgets/time_of_meal_picker_widget.dart | 22 +++++-------------- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/lib/features/diary/presentation/bloc/diary_cubit.dart b/lib/features/diary/presentation/bloc/diary_cubit.dart index 115b8f50..8d029ce6 100644 --- a/lib/features/diary/presentation/bloc/diary_cubit.dart +++ b/lib/features/diary/presentation/bloc/diary_cubit.dart @@ -26,7 +26,7 @@ class DiaryCubit extends Cubit { setSelectedDay(DateTime day) async { selectedDay = day; - await fetchDiary(); + await fetchDiary(true); } setSelectedMeal(int meal) { @@ -34,9 +34,11 @@ class DiaryCubit extends Cubit { emit((state as DiaryStateLoaded).copyWith(selectedMeal: selectedMeal)); } - fetchDiary() async { - emit(const DiaryState.loading()); - selectedMeal = 1; + fetchDiary([bool needLoading = false]) async { + if (needLoading) { + emit(const DiaryState.loading()); + selectedMeal = 1; + } try { final diaryDay = await diaryRepository.getDiaryByDate('$selectedDay'); emit( @@ -173,10 +175,11 @@ class DiaryCubit extends Cubit { required int diaryId, required String time, }) async { - return await diaryRepository.fillTime( + await diaryRepository.fillTime( diaryId: diaryId, mealId: selectedMeal, time: time, ); + await fetchDiary(); } } diff --git a/lib/features/diary/presentation/pages/diary_screen.dart b/lib/features/diary/presentation/pages/diary_screen.dart index b5e65795..c6c8e291 100644 --- a/lib/features/diary/presentation/pages/diary_screen.dart +++ b/lib/features/diary/presentation/pages/diary_screen.dart @@ -19,7 +19,7 @@ class _DiaryScreenState extends State { @override Widget build(BuildContext context) { return BlocProvider( - create: (BuildContext context) => sl()..fetchDiary(), + create: (BuildContext context) => sl()..fetchDiary(true), child: BlocBuilder( builder: (BuildContext context, DiaryState state) { return Scaffold( diff --git a/lib/features/diary/presentation/widgets/time_of_meal_picker_widget.dart b/lib/features/diary/presentation/widgets/time_of_meal_picker_widget.dart index 0fec0688..d099e936 100644 --- a/lib/features/diary/presentation/widgets/time_of_meal_picker_widget.dart +++ b/lib/features/diary/presentation/widgets/time_of_meal_picker_widget.dart @@ -15,8 +15,7 @@ class TimeOfMealPickerWidget extends StatefulWidget { class _TimeOfMealPickerWidgetState extends State { late final DiaryCubit diaryCubit; - String time = "${DateTime.now().hour.toString().padLeft(2, '0')}:${DateTime.now().minute.toString().padLeft(2, '0')}"; - DateTime _time = DateTime.now(); + DateTime value = DateTime.now(); @override void initState() { @@ -38,10 +37,7 @@ class _TimeOfMealPickerWidgetState extends State { use24hFormat: true, initialDateTime: DateTime.now(), onDateTimeChanged: (newTime) { - setState(() { - _time = newTime; - time = "${_time.hour.toString().padLeft(2, '0')}:${_time.minute.toString().padLeft(2, '0')}"; - }); + value = newTime; }, ), ), @@ -50,7 +46,7 @@ class _TimeOfMealPickerWidgetState extends State { Navigator.of(context).pop(); diaryCubit.fillTime( diaryId: diaryId, - time: '$time:00', + time: '${value.hour.toString().padLeft(2, '0')}:${value.minute.toString().padLeft(2, '0')}:00', ); }, borderRadius: BorderRadius.circular(20), @@ -81,15 +77,7 @@ class _TimeOfMealPickerWidgetState extends State { @override Widget build(BuildContext context) { - return BlocConsumer( - listener: (BuildContext context, DiaryState state) { - if (state is DiaryStateLoaded) { - setState(() { - time = state.diary.meals[state.selectedMeal - 1].time; - _time = DateTime.parse('0000-00-00 ${state.diary.meals[state.selectedMeal - 1].time}'); - }); - } - }, + return BlocBuilder( builder: (context, state) { if (state is DiaryStateLoaded) { return Column( @@ -121,7 +109,7 @@ class _TimeOfMealPickerWidgetState extends State { alignment: Alignment.center, padding: EdgeInsets.symmetric(horizontal: 16), child: Text( - time, + state.diary.meals[state.selectedMeal - 1].time.substring(0, state.diary.meals[state.selectedMeal - 1].time.length - 3), style: TextStyle( color: Color(0xFF6D6F71), fontSize: 17,