通过flitter中的提供者更新功能

问题描述

我要在地图的日历中添加一个事件,
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,),