I am trying to insert an event into a syncfusion flutter calendar by following this youtube tutorial but I did not want to use a provider as they had. I tried to write my main add/edit event code like this:
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> {
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,
);
In order to add an event, the code is :
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,
);
InsertEvent.addEvent(event);
Navigator.of(context).pop();
}
}
InsertEventClass Code:
class InsertEvent {
final List<Events> _events = [];
List<Events> get events => _events;
void addEvent(Events event) {
_events.add(event);
}
}
However, it gives me an error that the "Instance member 'addEvent' can't be accessed using static access". Can someone explain why this occurred and how it can be fixed?
Based on the shared information, we have checked the mentioned issue “Instance member '' can't be accessed using static access”. In the shared code snippet, you have called the method without creating an instance for the class, so you got this error. Also, we have a KB document for adding the appointment to the calendar using the Appointment editor. Please find the KB from the following link.
KB link: https://www.syncfusion.com/kb/11204/how-to-design-and-configure-your-appointment-editor-in-flutter-calendar
Also, we have a KB document for adding appointments to the calendar using onTap callback.
KB link: https://www.syncfusion.com/kb/12300/how-to-add-the-appointments-using-the-ontap-callback-in-the-flutter-calendar
Also, we have a KB document for removing the tapped appointment. Please find the documentation from the following link.
KB link: https://www.syncfusion.com/kb/11522/how-to-delete-an-appointment-in-the-flutter-calendar