事件未成功添加到日历中



我正在构建一个flutter应用程序,其中有一个syncfusion日历,您可以向其添加事件。但是,当我尝试添加一个事件时,它没有被添加,因此,尽管"添加事件",也没有显示在日历上。添加事件后页面弹出

访问类"InsertEvent"添加事件的地方:

class EditEventsPage extends StatefulWidget {
final Events? event;
const EditEventsPage({Key? key, this.event}) : super(key: key);
@override
_EditEventsPageState createState() => _EditEventsPageState();
}
class _EditEventsPageState extends State<EditEventsPage> {
var insertEventInstance = InsertEvent();
final _formKey = GlobalKey<FormState>();
final titleController = TextEditingController();
late DateTime fromDate;
late DateTime toDate;
@override
void initState() {
super.initState();
if (widget.event == null) {
fromDate = DateTime.now();
toDate = DateTime.now().add(Duration(hours: 4));
}
}
@override
void dispose() {
titleController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color(0xFF1c3f77),
elevation: 0,
leading: CloseButton(),
actions: buildEditingActions(),
),
body: SingleChildScrollView(
padding: EdgeInsets.all(12),
child: Form(
key: _formKey,
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
buildTitle(),
SizedBox(height: 25),
buildDateTime(),
])),
),
);
}
List<Widget> buildEditingActions() => [
ElevatedButton.icon(
style: ElevatedButton.styleFrom(
primary: Colors.transparent, shadowColor: Colors.transparent),
icon: Icon(Icons.done),
label: Text(
'Add',
style: TextStyle(color: Colors.white, fontSize: 15),
),
onPressed: saveEvent,
)
];
Widget buildTitle() => TextFormField(
style: TextStyle(fontSize: 15),
decoration:
InputDecoration(border: UnderlineInputBorder(), hintText: 'Title'),
onFieldSubmitted: (_) => saveEvent,
validator: (title) =>
title != null && title.isEmpty ? 'Title cannot be empty' : null,
controller: titleController,
);

saveEvent功能:

Future saveEvent() async {
final isValid = _formKey.currentState!.validate();
if (isValid) {
final event = Events(
title: titleController.text,
details: 'testing 1 2 3',
from: fromDate,
to: toDate,
isAllday: false,
);
insertEventInstance.addEvent(event);
Navigator.of(context).pop();
}
}

InsertEvent类:

class InsertEvent {
final List<Events> _events = [];
List<Events> get events => _events;
void addEvent(Events event) {
_events.add(event);
}
}

我使用了"var insertEventInstance = InsertEvent();"访问类,并尝试添加事件。虽然saveEvent函数在我单击add(如代码中所写)后弹出,但事件及其详细信息根本不出现。

日历数据源:

class CalendarWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
var eventInstance = InsertEvent();
final events = eventInstance.events;
return SfCalendar(
dataSource: EventDataSource(events),
);
}

是否有一个错误的地方调用事件在数据源的日历?如何显示已添加的事件?

使用CalendarDataSource的notifyListeners,你可以在UI上反映当约会是添加,删除,编辑时的变化。我们有一个KB文档来满足这个需求。请从以下链接找到KB,

KB链接:https://www.syncfusion.com/kb/11204/how-to-design-and-configure-your-appointment-editor-in-flutter-event-calendar-sfcalendar

此外,我们还有一个KB文档,用于从日历中删除约会并将约会添加到日历中。请从以下链接找到kB。

KB链接:https://www.syncfusion.com/kb/11522/how-to-delete-an-appointment-in-the-flutter-event-calendar-sfcalendar

https://www.syncfusion.com/kb/12300/how-to-add-the-appointments-using-the-ontap-callback-in-the-flutter-calendar