Skip to content

Commit 001a9e5

Browse files
committed
Improve calendar views
1 parent 8552cde commit 001a9e5

File tree

4 files changed

+38
-14
lines changed

4 files changed

+38
-14
lines changed

app/lib/helpers/event.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,14 @@ extension DateTimeHelper on DateTime {
5555

5656
int get week {
5757
final date = DateTime(year, month, day);
58-
final firstDay = DateTime(date.year, 1, 1);
58+
final firstDay = DateTime(date.year - 1, 12, 31);
5959
final days = date.difference(firstDay).inDays;
6060
return (days / 7).ceil();
6161
}
6262

63-
DateTime get startOfWeek {
64-
final date = DateTime(year, month, day);
65-
final firstDay = DateTime(date.year, 1, 1);
66-
final days = date.difference(firstDay).inDays;
67-
return firstDay.add(Duration(days: days - days % 7));
63+
DateTime get nextStartOfWeek {
64+
var date = DateTime(year, month, day);
65+
return date.addDays(7 - date.weekday + 1);
6866
}
6967

7068
int getDaysInMonth() {

app/lib/pages/calendar/month.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class _CalendarMonthViewState extends State<CalendarMonthView> {
4949
DateTime get _date => DateTime(
5050
_year,
5151
_month,
52-
_now.day,
52+
1,
5353
_now.hour,
5454
_now.minute,
5555
_now.second,
@@ -208,7 +208,7 @@ class _CalendarMonthViewState extends State<CalendarMonthView> {
208208
if (index < 7) {
209209
return LayoutBuilder(builder: (context, constraints) {
210210
final current =
211-
_date.startOfWeek.addDays(index + 1);
211+
_date.nextStartOfWeek.addDays(index);
212212
var text = DateFormat.EEEE(locale).format(
213213
current,
214214
);
@@ -237,7 +237,7 @@ class _CalendarMonthViewState extends State<CalendarMonthView> {
237237
return Container();
238238
}
239239
current = current - emptyPadding;
240-
final day = _date.addDays(current);
240+
final day = _date.nextStartOfWeek.addDays(current - 7);
241241
return InkWell(
242242
onTap: () async {
243243
await showDialog(
@@ -265,7 +265,12 @@ class _CalendarMonthViewState extends State<CalendarMonthView> {
265265
?.copyWith(
266266
color: day.isSameDay(DateTime.now())
267267
? Theme.of(context).primaryColor
268-
: null,
268+
: day.month != _month
269+
? Theme.of(context)
270+
.colorScheme
271+
.onSurface
272+
.withOpacity(0.5)
273+
: null,
269274
),
270275
),
271276
const SizedBox(height: 4),

app/lib/pages/calendar/week.dart

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flow/cubits/flow.dart';
22
import 'package:flow/pages/calendar/page.dart';
33
import 'package:flutter/material.dart';
44
import 'package:flutter_bloc/flutter_bloc.dart';
5+
import 'package:intl/intl.dart';
56
import 'package:shared/models/event/item/model.dart';
67
import 'package:shared/models/event/model.dart';
78
import 'package:shared/models/model.dart';
@@ -44,7 +45,8 @@ class _CalendarWeekViewState extends State<CalendarWeekView> {
4445
_year = now.year;
4546
}
4647

47-
DateTime get _date => DateTime(_year, 1, 1).addDays((_week - 1) * 7);
48+
DateTime get _date =>
49+
DateTime(_year, 1, 1).nextStartOfWeek.addDays((_week - 1) * 7);
4850

4951
Future<List<List<SourcedConnectedModel<CalendarItem, Event?>>>>
5052
_fetchCalendarItems() async {
@@ -82,7 +84,7 @@ class _CalendarWeekViewState extends State<CalendarWeekView> {
8284

8385
void _addWeek(int add) {
8486
setState(() {
85-
final dateTime = DateTime(_year - 1, 12, 31).addDays((_week + add) * 7);
87+
final dateTime = DateTime(_year, 1, 1).addDays((_week + add) * 7);
8688
_week = dateTime.week;
8789
_year = dateTime.year;
8890
_appointments = _fetchCalendarItems();
@@ -130,7 +132,7 @@ class _CalendarWeekViewState extends State<CalendarWeekView> {
130132
IconButton(
131133
icon: const Icon(Icons.today_outlined),
132134
isSelected: _date.year == DateTime.now().year &&
133-
_date.week == DateTime.now().week - 1,
135+
_date.week == DateTime.now().week,
134136
onPressed: () {
135137
setState(() {
136138
final now = DateTime.now();
@@ -204,6 +206,21 @@ class _CalendarWeekViewState extends State<CalendarWeekView> {
204206
final date = _date.addDays(entry.key);
205207
return Column(
206208
children: [
209+
// Weekday
210+
Text(
211+
DateFormat.EEEE().format(date),
212+
style: Theme.of(context)
213+
.textTheme
214+
.bodyMedium
215+
?.copyWith(
216+
color: date.isSameDay(DateTime.now())
217+
? Theme.of(context)
218+
.colorScheme
219+
.secondary
220+
: null,
221+
),
222+
),
223+
const SizedBox(height: 8),
207224
Text(
208225
date.day.toString(),
209226
style: Theme.of(context)
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
1+
* Add weekday to week view
2+
* Improve date colors in month view
13
* Fix dialog results
2-
* Fix markdown in lists
4+
* Fix markdown in lists
5+
* Fix calendar week display
6+
* Fix week view not starting on Monday

0 commit comments

Comments
 (0)