Extract helper methods

for better readability
This commit is contained in:
NBA2K1 2025-12-30 02:41:47 +01:00
parent 2c92d74a03
commit a63f0d67bd

View file

@ -80,31 +80,7 @@ class _CalendarScreenState extends ConsumerState<CalendarScreen> {
SliverToBoxAdapter(
child: Column(
children: [
ListTile(
title: Padding(
padding: const EdgeInsets.symmetric(vertical: 3),
child: Row(
children: [
Icon(
Icons.warning_amber_outlined,
color: context.secondaryColor,
),
const SizedBox(width: 10),
Flexible(
child: Text(
l10n.calendar_info,
softWrap: true,
overflow: TextOverflow.clip,
style: TextStyle(
fontSize: 13,
color: context.secondaryColor,
),
),
),
],
),
),
),
_buildWarningTile(context),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 15),
child: Row(
@ -142,40 +118,7 @@ class _CalendarScreenState extends ConsumerState<CalendarScreen> {
],
),
),
TableCalendar(
firstDay: firstDay,
lastDay: lastDay,
focusedDay: _focusedDay,
locale: locale.toLanguageTag(),
selectedDayPredicate: (day) =>
isSameDay(_selectedDay, day),
rangeStartDay: _rangeStart,
rangeEndDay: _rangeEnd,
calendarFormat: _calendarFormat,
rangeSelectionMode: _rangeSelectionMode,
eventLoader: (day) => _getEntriesForDay(day, data),
startingDayOfWeek: StartingDayOfWeek.monday,
calendarStyle: CalendarStyle(
outsideDaysVisible: true,
weekendTextStyle: TextStyle(
color: context.primaryColor,
),
),
onDaySelected: (selectedDay, focusedDay) =>
_onDaySelected(selectedDay, focusedDay, data),
onRangeSelected: (start, end, focusedDay) =>
_onRangeSelected(start, end, focusedDay, data),
onFormatChanged: (format) {
if (_calendarFormat != format) {
setState(() {
_calendarFormat = format;
});
}
},
onPageChanged: (focusedDay) {
_focusedDay = focusedDay;
},
),
_buildCalendar(data, locale),
const SizedBox(height: 15),
],
),
@ -238,6 +181,58 @@ class _CalendarScreenState extends ConsumerState<CalendarScreen> {
);
}
Widget _buildWarningTile(BuildContext context) {
return ListTile(
title: Padding(
padding: const EdgeInsets.symmetric(vertical: 3),
child: Row(
children: [
Icon(Icons.warning_amber_outlined, color: context.secondaryColor),
const SizedBox(width: 10),
Flexible(
child: Text(
context.l10n.calendar_info,
softWrap: true,
overflow: TextOverflow.clip,
style: TextStyle(fontSize: 13, color: context.secondaryColor),
),
),
],
),
),
);
}
Widget _buildCalendar(List<Manga> data, Locale locale) {
return TableCalendar(
firstDay: firstDay,
lastDay: lastDay,
focusedDay: _focusedDay,
locale: locale.toLanguageTag(),
selectedDayPredicate: (day) => isSameDay(_selectedDay, day),
rangeStartDay: _rangeStart,
rangeEndDay: _rangeEnd,
calendarFormat: _calendarFormat,
rangeSelectionMode: _rangeSelectionMode,
eventLoader: (day) => _getEntriesForDay(day, data),
startingDayOfWeek: StartingDayOfWeek.monday,
calendarStyle: CalendarStyle(
outsideDaysVisible: true,
weekendTextStyle: TextStyle(color: context.primaryColor),
),
onDaySelected: (selectedDay, focusedDay) =>
_onDaySelected(selectedDay, focusedDay, data),
onRangeSelected: (start, end, focusedDay) =>
_onRangeSelected(start, end, focusedDay, data),
onFormatChanged: (format) {
if (_calendarFormat != format) {
setState(() => _calendarFormat = format);
}
},
onPageChanged: (focusedDay) => _focusedDay = focusedDay,
);
}
List<Manga> _getEntriesForDay(DateTime day, List<Manga> data) {
return data.where((e) {
final lastChapter = e.chapters