flutter_clean_calendar 1.0.2+1 flutter_clean_calendar: ^1.0.2+1 copied to clipboard
Simple and clean flutter calendar with ability to slide up/down to show weekly/monthly calendar.
import 'package:flutter/material.dart';
import 'package:flutter_clean_calendar/flutter_clean_calendar.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Clean Calendar Demo',
home: CalendarScreen(),
);
}
}
class CalendarScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _CalendarScreenState();
}
}
class _CalendarScreenState extends State<CalendarScreen> {
void _handleNewDate(date) {
setState(() {
_selectedDay = date;
_selectedEvents = _events[_selectedDay] ?? [];
});
print(_selectedEvents);
}
List _selectedEvents;
DateTime _selectedDay;
final Map<DateTime, List> _events = {
DateTime(2020, 5, 7): [
{'name': 'Event A', 'isDone': true},
],
DateTime(2020, 5, 9): [
{'name': 'Event A', 'isDone': true},
{'name': 'Event B', 'isDone': true},
],
DateTime(2020, 5, 10): [
{'name': 'Event A', 'isDone': true},
{'name': 'Event B', 'isDone': true},
],
DateTime(2020, 5, 13): [
{'name': 'Event A', 'isDone': true},
{'name': 'Event B', 'isDone': true},
{'name': 'Event C', 'isDone': false},
],
DateTime(2020, 5, 25): [
{'name': 'Event A', 'isDone': true},
{'name': 'Event B', 'isDone': true},
{'name': 'Event C', 'isDone': false},
],
DateTime(2020, 6, 6): [
{'name': 'Event A', 'isDone': false},
],
};
@override
void initState() {
super.initState();
_selectedEvents = _events[_selectedDay] ?? [];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Container(
child: Calendar(
startOnMonday: true,
weekDays: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
events: _events,
onRangeSelected: (range) =>
print("Range is ${range.from}, ${range.to}"),
onDateSelected: (date) => _handleNewDate(date),
isExpandable: true,
eventDoneColor: Colors.green,
selectedColor: Colors.pink,
todayColor: Colors.yellow,
eventColor: Colors.grey,
dayOfWeekStyle: TextStyle(
color: Colors.black,
fontWeight: FontWeight.w800,
fontSize: 11),
),
),
_buildEventList()
],
),
),
);
}
Widget _buildEventList() {
return Expanded(
child: ListView.builder(
itemBuilder: (BuildContext context, int index) => Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1.5, color: Colors.black12),
),
),
padding: const EdgeInsets.symmetric(horizontal: 0.0, vertical: 4.0),
child: ListTile(
title: Text(_selectedEvents[index]['name'].toString()),
onTap: () {},
),
),
itemCount: _selectedEvents.length,
),
);
}
}