forked from eatvio/eatvio_app
feat: diary time of meal
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user