feat: diary time of meal

This commit is contained in:
Alex
2024-12-01 23:33:42 +03:00
parent 7e0ca28ede
commit d2c2d4d479
3 changed files with 14 additions and 23 deletions

View File

@@ -26,7 +26,7 @@ class DiaryCubit extends Cubit<DiaryState> {
setSelectedDay(DateTime day) async {
selectedDay = day;
await fetchDiary();
await fetchDiary(true);
}
setSelectedMeal(int meal) {
@@ -34,9 +34,11 @@ class DiaryCubit extends Cubit<DiaryState> {
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<DiaryState> {
required int diaryId,
required String time,
}) async {
return await diaryRepository.fillTime(
await diaryRepository.fillTime(
diaryId: diaryId,
mealId: selectedMeal,
time: time,
);
await fetchDiary();
}
}

View File

@@ -19,7 +19,7 @@ class _DiaryScreenState extends State<DiaryScreen> {
@override
Widget build(BuildContext context) {
return BlocProvider<DiaryCubit>(
create: (BuildContext context) => sl<DiaryCubit>()..fetchDiary(),
create: (BuildContext context) => sl<DiaryCubit>()..fetchDiary(true),
child: BlocBuilder<DiaryCubit, DiaryState>(
builder: (BuildContext context, DiaryState state) {
return Scaffold(

View File

@@ -15,8 +15,7 @@ class TimeOfMealPickerWidget extends StatefulWidget {
class _TimeOfMealPickerWidgetState extends State<TimeOfMealPickerWidget> {
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<TimeOfMealPickerWidget> {
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<TimeOfMealPickerWidget> {
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<TimeOfMealPickerWidget> {
@override
Widget build(BuildContext context) {
return BlocConsumer<DiaryCubit, DiaryState>(
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<DiaryCubit, DiaryState>(
builder: (context, state) {
if (state is DiaryStateLoaded) {
return Column(
@@ -121,7 +109,7 @@ class _TimeOfMealPickerWidgetState extends State<TimeOfMealPickerWidget> {
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,