问题描述
我要在地图的日历中添加一个事件,Map<DateTime,List<EventStore>> _events ={};
现在,当在日历中选择任何日期时,我希望事件在日历中显示,但是就我而言,无论何时选择任何日期,它都不会立即显示事件,而是在重新加载应用程序之后显示。
我已经尝试过在选择任何日期时显示事件,
下面是示例代码。
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),);
}
}
在提供者上
settingTheValue({controller}){
selectedEvents =events[controller];
notifyListeners();
}
whenSelectedDay(_date,_event){
selectedEvents = _event.cast<EventStore>();
notifyListeners();
}
感觉我在使用参数时好像犯了任何错误。我已经尝试过使用Date
的{{1}}和event
,如上。
这是github repo
的github回购
当立即选择任何日期时如何显示事件?
解决方法
您似乎没有将所选事件添加到TableCalendar
小部件中。在您的情况下,它将是:
TableCalendar(
events: eventModifierProvider.selectedEvents,),