Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: flutter_calendar_example
description: Demonstrates the flutter_calendar widget

environment:
sdk: ">=2.6.0 <3.0.0"

dependencies:
flutter:
sdk: flutter
Expand Down
6 changes: 3 additions & 3 deletions lib/calendar_tile.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:date_utils/date_utils.dart';
import 'package:date_utils/date_utils.dart' as dt;

class CalendarTile extends StatelessWidget {
final VoidCallback onDateSelected;
Expand Down Expand Up @@ -45,8 +45,8 @@ class CalendarTile extends StatelessWidget {
: new BoxDecoration(),
alignment: Alignment.center,
child: new Text(
Utils.formatDay(date).toString(),
style: isSelected ? Theme.of(context).primaryTextTheme.body1 : dateStyles,
dt.DateUtils.formatDay(date).toString(),
style: isSelected ? Theme.of(context).primaryTextTheme.bodyText1 : dateStyles,
textAlign: TextAlign.center,
),
),
Expand Down
91 changes: 45 additions & 46 deletions lib/flutter_calendar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:tuple/tuple.dart';
import 'package:flutter_calendar/calendar_tile.dart';
import 'package:date_utils/date_utils.dart';
import 'package:date_utils/date_utils.dart' as dt;

typedef DayBuilder(BuildContext context, DateTime day);

Expand Down Expand Up @@ -32,7 +32,6 @@ class Calendar extends StatefulWidget {
}

class _CalendarState extends State<Calendar> {
final calendarUtils = new Utils();
List<DateTime> selectedMonthsDays;
Iterable<DateTime> selectedWeeksDays;
DateTime _selectedDate = new DateTime.now();
Expand All @@ -45,14 +44,14 @@ class _CalendarState extends State<Calendar> {
super.initState();
if (widget.initialCalendarDateOverride != null)
_selectedDate = widget.initialCalendarDateOverride;
selectedMonthsDays = Utils.daysInMonth(_selectedDate);
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(_selectedDate);
selectedMonthsDays = dt.DateUtils.daysInMonth(_selectedDate);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(_selectedDate);
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList()
.sublist(0, 7);
displayMonth = Utils.formatMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
}

Widget get nameAndIconRow {
Expand Down Expand Up @@ -132,7 +131,7 @@ class _CalendarState extends State<Calendar> {
List<DateTime> calendarDays =
isExpanded ? selectedMonthsDays : selectedWeeksDays;

Utils.weekdays.forEach(
dt.DateUtils.weekdays.forEach(
(day) {
dayWidgets.add(
new CalendarTile(
Expand All @@ -152,7 +151,7 @@ class _CalendarState extends State<Calendar> {
monthEnded = true;
}

if (Utils.isFirstDayOfMonth(day)) {
if (dt.DateUtils.isFirstDayOfMonth(day)) {
monthStarted = true;
}

Expand All @@ -170,7 +169,7 @@ class _CalendarState extends State<Calendar> {
onDateSelected: () => handleSelectedDateAndUserCallback(day),
date: day,
dateStyles: configureDateStyle(monthStarted, monthEnded),
isSelected: Utils.isSameDay(selectedDate, day),
isSelected: dt.DateUtils.isSameDay(selectedDate, day),
),
);
}
Expand All @@ -181,7 +180,7 @@ class _CalendarState extends State<Calendar> {

TextStyle configureDateStyle(monthStarted, monthEnded) {
TextStyle dateStyles;
final TextStyle body1Style = Theme.of(context).textTheme.body1;
final TextStyle body1Style = Theme.of(context).textTheme.bodyText1;

if (isExpanded) {
final TextStyle body1StyleDisabled = body1Style.copyWith(
Expand All @@ -207,7 +206,7 @@ class _CalendarState extends State<Calendar> {
return new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
new Text(Utils.fullDayFormat(selectedDate)),
new Text(dt.DateUtils.fullDayFormat(selectedDate)),
new IconButton(
iconSize: 20.0,
padding: new EdgeInsets.all(0.0),
Expand Down Expand Up @@ -244,68 +243,68 @@ class _CalendarState extends State<Calendar> {

void resetToToday() {
_selectedDate = new DateTime.now();
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(_selectedDate);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(_selectedDate);

setState(() {
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList();
selectedMonthsDays = Utils.daysInMonth(_selectedDate);
displayMonth = Utils.formatMonth(_selectedDate);
selectedMonthsDays = dt.DateUtils.daysInMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
});

_launchDateSelectionCallback(_selectedDate);
}

void nextMonth() {
setState(() {
_selectedDate = Utils.nextMonth(_selectedDate);
var firstDateOfNewMonth = Utils.firstDayOfMonth(_selectedDate);
var lastDateOfNewMonth = Utils.lastDayOfMonth(_selectedDate);
_selectedDate = dt.DateUtils.nextMonth(_selectedDate);
var firstDateOfNewMonth = dt.DateUtils.firstDayOfMonth(_selectedDate);
var lastDateOfNewMonth = dt.DateUtils.lastDayOfMonth(_selectedDate);
updateSelectedRange(firstDateOfNewMonth, lastDateOfNewMonth);
selectedMonthsDays = Utils.daysInMonth(_selectedDate);
displayMonth = Utils.formatMonth(_selectedDate);
selectedMonthsDays = dt.DateUtils.daysInMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
});
}

void previousMonth() {
setState(() {
_selectedDate = Utils.previousMonth(_selectedDate);
var firstDateOfNewMonth = Utils.firstDayOfMonth(_selectedDate);
var lastDateOfNewMonth = Utils.lastDayOfMonth(_selectedDate);
_selectedDate = dt.DateUtils.previousMonth(_selectedDate);
var firstDateOfNewMonth = dt.DateUtils.firstDayOfMonth(_selectedDate);
var lastDateOfNewMonth = dt.DateUtils.lastDayOfMonth(_selectedDate);
updateSelectedRange(firstDateOfNewMonth, lastDateOfNewMonth);
selectedMonthsDays = Utils.daysInMonth(_selectedDate);
displayMonth = Utils.formatMonth(_selectedDate);
selectedMonthsDays = dt.DateUtils.daysInMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
});
}

void nextWeek() {
setState(() {
_selectedDate = Utils.nextWeek(_selectedDate);
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(_selectedDate);
_selectedDate = dt.DateUtils.nextWeek(_selectedDate);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(_selectedDate);
updateSelectedRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek);
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList()
.sublist(0, 7);
displayMonth = Utils.formatMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
});
_launchDateSelectionCallback(_selectedDate);
}

void previousWeek() {
setState(() {
_selectedDate = Utils.previousWeek(_selectedDate);
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(_selectedDate);
_selectedDate = dt.DateUtils.previousWeek(_selectedDate);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(_selectedDate);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(_selectedDate);
updateSelectedRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek);
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList()
.sublist(0, 7);
displayMonth = Utils.formatMonth(_selectedDate);
displayMonth = dt.DateUtils.formatMonth(_selectedDate);
});
_launchDateSelectionCallback(_selectedDate);
}
Expand All @@ -326,16 +325,16 @@ class _CalendarState extends State<Calendar> {
);

if (selected != null) {
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(selected);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(selected);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(selected);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(selected);

setState(() {
_selectedDate = selected;
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList();
selectedMonthsDays = Utils.daysInMonth(selected);
displayMonth = Utils.formatMonth(selected);
selectedMonthsDays = dt.DateUtils.daysInMonth(selected);
displayMonth = dt.DateUtils.formatMonth(selected);
});
// updating selected date range based on selected week
updateSelectedRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek);
Expand Down Expand Up @@ -381,14 +380,14 @@ class _CalendarState extends State<Calendar> {
}

void handleSelectedDateAndUserCallback(DateTime day) {
var firstDayOfCurrentWeek = Utils.firstDayOfWeek(day);
var lastDayOfCurrentWeek = Utils.lastDayOfWeek(day);
var firstDayOfCurrentWeek = dt.DateUtils.firstDayOfWeek(day);
var lastDayOfCurrentWeek = dt.DateUtils.lastDayOfWeek(day);
setState(() {
_selectedDate = day;
selectedWeeksDays =
Utils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
dt.DateUtils.daysInRange(firstDayOfCurrentWeek, lastDayOfCurrentWeek)
.toList();
selectedMonthsDays = Utils.daysInMonth(day);
selectedMonthsDays = dt.DateUtils.daysInMonth(day);
});
_launchDateSelectionCallback(day);
}
Expand Down
8 changes: 4 additions & 4 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ author: Eric Windmill <ericwindmill.com>
homepage: https://github.com/apptreesoftware/flutter_calendar

environment:
sdk: ">=2.0.0 <3.0.0"
sdk: ">=2.10.0 <3.0.0"

dependencies:
flutter:
sdk: flutter
intl: ^0.15.0
tuple: ^1.0.1
date_utils: ^0.1.0
intl: ^0.17.0
tuple: ^2.0.0
date_utils: ^0.2.0

dev_dependencies:
flutter_test:
Expand Down