11import 'package:flutter/material.dart' ;
2- import 'package:flutter/scheduler.dart' ;
32import 'package:flutter/widgets.dart' ;
43import 'package:intl/intl.dart' ;
54import 'package:syncfusion_flutter_calendar/calendar.dart' ;
@@ -9,7 +8,7 @@ void main() => runApp(DateTimeDetails());
98class DateTimeDetails extends StatelessWidget {
109 @override
1110 Widget build (BuildContext context) {
12- return MaterialApp (
11+ return MaterialApp (
1312 debugShowCheckedModeBanner: false ,
1413 home: EventCalendar (),
1514 );
@@ -29,28 +28,10 @@ List<String> colors = <String>[
2928 'Default'
3029];
3130
32- List <String > views = < String > [
33- 'Day' ,
34- 'Week' ,
35- 'WorkWeek' ,
36- 'Month' ,
37- 'Timeline Day' ,
38- 'Timeline Week' ,
39- 'Timeline WorkWeek'
40- ];
41-
4231class ScheduleExample extends State <EventCalendar > {
43- CalendarView _calendarView;
44- String _text, _titleText;
45- Color headerColor, viewHeaderColor, calendarColor, defaultColor;
46-
47- @override
48- void initState () {
49- _calendarView = CalendarView .week;
50- _text= '' ;
51- _titleText= '' ;
52- super .initState ();
53- }
32+ final CalendarController _controller = CalendarController ();
33+ String ? _text= '' , _titleText= '' ;
34+ Color ? _headerColor, _viewHeaderColor, _calendarColor;
5435
5536 @override
5637 Widget build (BuildContext context) {
@@ -72,112 +53,80 @@ class ScheduleExample extends State<EventCalendar> {
7253 onSelected: (String value) {
7354 setState (() {
7455 if (value == 'Pink' ) {
75- headerColor = const Color (0xFF09e8189 );
76- viewHeaderColor = const Color (0xFF0f3acb6 );
77- calendarColor = const Color (0xFF0ffe5d8 );
56+ _headerColor = const Color (0xFF09e8189 );
57+ _viewHeaderColor = const Color (0xFF0f3acb6 );
58+ _calendarColor = const Color (0xFF0ffe5d8 );
7859 } else if (value == 'Blue' ) {
79- headerColor = const Color (0xFF0007eff );
80- viewHeaderColor = const Color (0xFF03aa4f6 );
81- calendarColor = const Color (0xFF0bae5ff );
60+ _headerColor = const Color (0xFF0007eff );
61+ _viewHeaderColor = const Color (0xFF03aa4f6 );
62+ _calendarColor = const Color (0xFF0bae5ff );
8263 } else if (value == 'Wall Brown' ) {
83- headerColor = const Color (0xFF0937c5d );
84- viewHeaderColor = const Color (0xFF0e6d9b1 );
85- calendarColor = const Color (0xFF0d1d2d6 );
64+ _headerColor = const Color (0xFF0937c5d );
65+ _viewHeaderColor = const Color (0xFF0e6d9b1 );
66+ _calendarColor = const Color (0xFF0d1d2d6 );
8667 } else if (value == 'Yellow' ) {
87- headerColor = const Color (0xFF0f7ed53 );
88- viewHeaderColor = const Color (0xFF0fff77f );
89- calendarColor = const Color (0xFF0f7f2cc );
68+ _headerColor = const Color (0xFF0f7ed53 );
69+ _viewHeaderColor = const Color (0xFF0fff77f );
70+ _calendarColor = const Color (0xFF0f7f2cc );
9071 } else if (value == 'Default' ) {
91- headerColor = null ;
92- viewHeaderColor = null ;
93- calendarColor = null ;
72+ _headerColor = null ;
73+ _viewHeaderColor = null ;
74+ _calendarColor = null ;
9475 }
9576 });
9677 },
9778 ),
9879 ],
99- backgroundColor: headerColor,
100- centerTitle: true ,
101- titleSpacing: 60 ,
102- leading: PopupMenuButton <String >(
103- icon: Icon (Icons .calendar_today),
104- itemBuilder: (BuildContext context) => views.map ((String choice) {
105- return PopupMenuItem <String >(
106- value: choice,
107- child: Text (choice),
108- );
109- }).toList (),
110- onSelected: (String value) {
111- setState (() {
112- if (value == 'Day' ) {
113- _calendarView = CalendarView .day;
114- } else if (value == 'Week' ) {
115- _calendarView = CalendarView .week;
116- } else if (value == 'WorkWeek' ) {
117- _calendarView = CalendarView .workWeek;
118- } else if (value == 'Month' ) {
119- _calendarView = CalendarView .month;
120- } else if (value == 'Timeline Day' ) {
121- _calendarView = CalendarView .timelineDay;
122- } else if (value == 'Timeline Week' ) {
123- _calendarView = CalendarView .timelineWeek;
124- } else if (value == 'Timeline WorkWeek' ) {
125- _calendarView = CalendarView .timelineWorkWeek;
126- }
127- });
128- },
129- ),
80+ backgroundColor: _headerColor,
13081 ),
131- body: Column (
132- children: < Widget > [
133- Expanded (
134- child: SfCalendar (
135- viewHeaderStyle:
136- ViewHeaderStyle (backgroundColor: viewHeaderColor),
137- backgroundColor: calendarColor,
138- view: _calendarView,
139- onTap: calendarTapped,
140- ),
141- ),
142- ],
82+ body: Expanded (
83+ child: SfCalendar (
84+ viewHeaderStyle:
85+ ViewHeaderStyle (backgroundColor: _viewHeaderColor),
86+ backgroundColor: _calendarColor,
87+ view: CalendarView .week,
88+ controller: _controller,
89+ allowedViews: [
90+ CalendarView .day,
91+ CalendarView .week,
92+ CalendarView .workWeek,
93+ CalendarView .month,
94+ CalendarView .timelineDay,
95+ CalendarView .timelineWeek,
96+ CalendarView .timelineWorkWeek
97+ ],
98+ onTap: calendarTapped,
99+ ),
143100 ),
144101 ),
145102 );
146103 }
147104
148105 void calendarTapped (CalendarTapDetails details) {
149- if (details.targetElement == CalendarElement .header) {
150- _text = DateFormat ('MMMM yyyy' )
151- .format (details.date)
152- .toString ();
153- _titleText= 'Header' ;
154- }
155- else if (details.targetElement == CalendarElement .viewHeader) {
156- _text = DateFormat ('EEEE dd, MMMM yyyy' )
157- .format (details.date)
158- .toString ();
159- _titleText= 'View Header' ;
160- }
161- else if (details.targetElement == CalendarElement .calendarCell) {
162- _text = DateFormat ('EEEE dd, MMMM yyyy' )
163- .format (details.date)
164- .toString ();
165- _titleText= 'Calendar cell' ;
166- }
167- showDialog (
168- context: context,
169- builder: (BuildContext context) {
170- return AlertDialog (
171- title: Container (child: new Text (" $_titleText " )),
172- content: Container (child: new Text (" $_text " )),
173- actions: < Widget > [
174- new FlatButton (onPressed: (){
106+ if (details.targetElement == CalendarElement .header) {
107+ _text = DateFormat ('MMMM yyyy' ).format (details.date! ).toString ();
108+ _titleText = 'Header' ;
109+ } else if (details.targetElement == CalendarElement .viewHeader) {
110+ _text = DateFormat ('EEEE dd, MMMM yyyy' ).format (details.date! ).toString ();
111+ _titleText = 'View Header' ;
112+ } else if (details.targetElement == CalendarElement .calendarCell) {
113+ _text = DateFormat ('EEEE dd, MMMM yyyy' ).format (details.date! ).toString ();
114+ _titleText = 'Calendar cell' ;
115+ }
116+ showDialog (
117+ context: context,
118+ builder: (BuildContext context) {
119+ return AlertDialog (
120+ title: Container (child: new Text (" $_titleText " )),
121+ content: Container (child: new Text (" $_text " )),
122+ actions: < Widget > [
123+ new TextButton (
124+ onPressed: () {
175125 Navigator .of (context).pop ();
176- }, child : new Text ( 'close' ))
177- ],
178- );
179- } );
180- }
126+ },
127+ child : new Text ( 'close' ))
128+ ],
129+ );
130+ });
181131 }
182-
183-
132+ }
0 commit comments