forked from eatvio/eatvio_app
feat(diary): Nutrition chart looks like half-donut
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:eatvio_app/features/calendar/models/calendar_model.dart';
|
||||
import 'package:eatvio_app/features/calendar/presentation/bloc/calendar_cubit.dart';
|
||||
import 'package:eatvio_app/features/calendar/presentation/bloc/calendar_state.dart';
|
||||
import 'package:eatvio_app/core/app_export.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:table_calendar/table_calendar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
@@ -101,26 +102,34 @@ class CalendarScreen extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
child: TableCalendar(
|
||||
locale: 'ru_RU',
|
||||
firstDay: DateTime.utc(2010, 10, 16),
|
||||
lastDay: DateTime.utc(2030, 3, 14),
|
||||
focusedDay: DateTime.now(),
|
||||
startingDayOfWeek: StartingDayOfWeek.monday,
|
||||
calendarBuilders: CalendarBuilders(
|
||||
selectedBuilder: (context, day, focusedDay) => _buildCellDate(day, focusedDay: focusedDay, state),
|
||||
defaultBuilder: (context, day, focusedDay) => _buildCellDate(day, state),
|
||||
todayBuilder: (context, day, focusedDay) => _buildCellDate(day, state),
|
||||
selectedBuilder: (context, day, focusedDay) =>
|
||||
_buildCellDate(context, day, focusedDay: focusedDay, state),
|
||||
defaultBuilder: (context, day, focusedDay) =>
|
||||
_buildCellDate(context, day, state),
|
||||
todayBuilder: (context, day, focusedDay) =>
|
||||
_buildCellDate(context, day, state),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildCellDate(DateTime day, CalendarStateLoaded state, {DateTime? focusedDay}) {
|
||||
Widget _buildCellDate(
|
||||
BuildContext context, DateTime day, CalendarStateLoaded state,
|
||||
{DateTime? focusedDay}) {
|
||||
final String dayString = day.toIso8601String().split('T').first;
|
||||
final List<CalendarModel> calendarModels = state.calendarList;
|
||||
|
||||
// Находим первую модель, соответствующую дате
|
||||
final CalendarModel model = calendarModels.firstWhere((model) => model.date == dayString, orElse: () => CalendarModel(date: dayString, diary: {}));
|
||||
final CalendarModel model = calendarModels.firstWhere(
|
||||
(model) => model.date == dayString,
|
||||
orElse: () => CalendarModel(date: dayString, diary: {}));
|
||||
|
||||
Color? bgclr; // Объявляем переменную bgclr здесь
|
||||
|
||||
@@ -138,14 +147,16 @@ Widget _buildCellDate(DateTime day, CalendarStateLoaded state, {DateTime? focuse
|
||||
bgclr = Colors.white; // Значение по умолчанию, если diary не является Map
|
||||
}
|
||||
|
||||
return Container(
|
||||
margin: const EdgeInsets.all(5),
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
shape: (day == focusedDay) ? BoxShape.circle : BoxShape.rectangle,
|
||||
color: bgclr,
|
||||
borderRadius: (day == focusedDay) ? null : BorderRadius.circular(4),
|
||||
),
|
||||
child: Text(day.day.toString(), style: TextStyle(color: Colors.black)),
|
||||
);
|
||||
return GestureDetector(
|
||||
onTap: () => GoRouter.of(context).replace('/diary-screen'),
|
||||
child: Container(
|
||||
margin: const EdgeInsets.all(5),
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
shape: (day == focusedDay) ? BoxShape.circle : BoxShape.rectangle,
|
||||
color: bgclr,
|
||||
borderRadius: (day == focusedDay) ? null : BorderRadius.circular(4),
|
||||
),
|
||||
child: Text(day.day.toString(), style: TextStyle(color: Colors.black)),
|
||||
));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user