I am adding an event in the calendar in a map,
Map<DateTime, List<EventStore>> _events ={};
Now When any date is selected in the calendar I want the events to show in the calendar, but In my case whenever any date is selected it does not show the event immediately but after reloading the app.
I have tried this for showing the events when any date is selected,
Down here is the sample code.
calender_and_event.dart
import 'package:conceptualschoolapp/Screens/Model/event_modifier.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
CalendarController _controller;
@override
void initState() {
super.initState();
_controller = CalendarController();
}
EventModifier eventModifierProvider;
@override
Widget build(BuildContext context) {
eventModifierProvider = Provider.of<EventModifier>(context, listen: false);
return Scaffold(
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TableCalendar(
onDaySelected: eventModifierProvider.whenSelectedDay,
),
GestureDetector(
onTap: () {
_showAddDialog();
},
)
],
),
),
);
}
_showAddDialog() async {
await showDialog(
context: context,
builder: (context) => FlatButton(
onPressed: eventModifierProvider.settingTheValue(
controller: _controller.selectedDay),
),
);
}
}
on provider
settingTheValue({controller}){
selectedEvents =events[controller];
notifyListeners();
}
whenSelectedDay(_date,_event){
selectedEvents = _event.cast<EventStore>();
notifyListeners();
}
It feels as if I have done any mistake in working with parameters. I have tried using Date
and event
of onSelectedDay
like above.
Here is the github repo of this, github repo
How can I show the events when any date is selected immediatly?
It looks like you are not adding the selected events to the
TableCalendar
widget. in your case this would be: