I have a flutter app in which the Bottom Navigation Bar has the Syncfusion Calendar in one of the tabs.
In the first tab, there is a Floating Action Button which opens a Dialog and has a TextFormField. As soon as the Dialog opens, I get this error
The relevant error-causing widget was
SfCalendar
calendar.dart:41
When the exception was thrown, this was the stack
#2 new RRect._raw (dart:ui/geometry.dart:1283:15)
#3 new RRect.fromRectAndRadius (dart:ui/geometry.dart:1186:12)
#4 _AppointmentLayoutState._updateMonthAppointmentDetails
appointment_layout.dart:577
#5 _AppointmentLayoutState._updateAppointmentDetails
appointment_layout.dart:442
#6 _AppointmentLayoutState.didUpdateWidget
appointment_layout.dart:164
#7 StatefulElement.update
framework.dart:5142
#8 Element.updateChild
framework.dart:3660
#9 SingleChildRenderObjectElement.update
framework.dart:6384
#10 Element.updateChild
framework.dart:3660
#11 RenderObjectElement.updateChildren
framework.dart:5981
#12 MultiChildRenderObjectElement.update
framework.dart:6537
#13 Element.updateChild
framework.dart:3660
#14 SingleChildRenderObjectElement.update
framework.dart:6384
#15 Element.updateChild
framework.dart:3660
#16 ComponentElement.performRebuild
framework.dart:4993
#17 Element.rebuild
framework.dart:4690
#18 ProxyElement.update
framework.dart:5301
#19 Element.updateChild
framework.dart:3660
#20 RenderObjectElement.updateChildren
framework.dart:5981
#21 MultiChildRenderObjectElement.update
framework.dart:6537
#22 Element.updateChild
framework.dart:3660
#23 SingleChildRenderObjectElement.update
framework.dart:6384
#24 Element.updateChild
framework.dart:3660
#25 SingleChildRenderObjectElement.update
framework.dart:6384
#26 Element.updateChild
framework.dart:3660
#27 SingleChildRenderObjectElement.update
framework.dart:6384
#28 Element.updateChild
framework.dart:3660
#29 ComponentElement.performRebuild
framework.dart:4993
#30 StatefulElement.performRebuild
#56 StatefulElement.performRebuild
framework.dart:5133
#57 Element.rebuild
framework.dart:4690
#58 StatefulElement.update
framework.dart:5156
#59 Element.updateChild
framework.dart:3660
#60 ComponentElement.performRebuild
framework.dart:4993
#61 Element.rebuild
framework.dart:4690
#62 StatelessElement.update
framework.dart:5044
#63 Element.updateChild
framework.dart:3660
#64 ComponentElement.performRebuild
framework.dart:4993
#65 Element.rebuild
framework.dart:4690
#66 ProxyElement.update
framework.dart:5301
#67 _InheritedNotifierElement.update
inherited_notifier.dart:107
#68 Element.updateChild
framework.dart:3660
#69 SingleChildRenderObjectElement.update
framework.dart:6384
#70 Element.updateChild
framework.dart:3660
#71 ComponentElement.performRebuild
framework.dart:4993
#72 StatefulElement.performRebuild
framework.dart:5133
#73 Element.rebuild
framework.dart:4690
#74 StatefulElement.update
framework.dart:5156
#75 Element.updateChild
framework.dart:3660
#76 ComponentElement.performRebuild
framework.dart:4993
#77 Element.rebuild
framework.dart:4690
#78 ProxyElement.update
framework.dart:5301
#79 Element.updateChild
framework.dart:3660
#80 RenderObjectElement.updateChildren
framework.dart:5981
#81 MultiChildRenderObjectElement.update
framework.dart:6537
#82 Element.updateChild
framework.dart:3660
#83 SingleChildRenderObjectElement.update
framework.dart:6384
#84 Element.updateChild
framework.dart:3660
#85 SingleChildRenderObjectElement.update
framework.dart:6384
#86 Element.updateChild
framework.dart:3660
#87 ComponentElement.performRebuild
framework.dart:4993
#88 StatefulElement.performRebuild
framework.dart:5133
#89 Element.rebuild
framework.dart:4690
#90 StatefulElement.update
framework.dart:5156
#91 Element.updateChild
framework.dart:3660
#92 ComponentElement.performRebuild
framework.dart:4993
#93 Element.rebuild
framework.dart:4690
#94 StatelessElement.update
framework.dart:5044
#95 Element.updateChild
framework.dart:3660
#96 ComponentElement.performRebuild
framework.dart:4993
#97 StatefulElement.performRebuild
framework.dart:5133
#98 Element.rebuild
framework.dart:4690
#99 StatefulElement.update
framework.dart:5156
#100 Element.updateChild
framework.dart:3660
#101 SingleChildRenderObjectElement.update
framework.dart:6384
#102 Element.updateChild
framework.dart:3660
#103 ComponentElement.performRebuild
framework.dart:4993
#104 StatefulElement.performRebuild
framework.dart:5133
#105 Element.rebuild
framework.dart:4690
#106 StatefulElement.update
framework.dart:5156
#107 Element.updateChild
framework.dart:3660
#108 ComponentElement.performRebuild
framework.dart:4993
#109 Element.rebuild
framework.dart:4690
#110 ProxyElement.update
framework.dart:5301
#218 RendererBinding.drawFrame
binding.dart:516
#219 WidgetsBinding.drawFrame
binding.dart:865
#220 RendererBinding._handlePersistentFrameCallback
binding.dart:381
#221 SchedulerBinding._invokeFrameCallback
binding.dart:1289
#222 SchedulerBinding.handleDrawFrame
binding.dart:1218
#223 SchedulerBinding._handleDrawFrame
binding.dart:1076
#224 _invoke (dart:ui/hooks.dart:145:13)
#225 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#226 _drawFrame (dart:ui/hooks.dart:112:31)
(elided 2 frames from class _AssertionError)
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
'dart:ui/geometry.dart': Failed assertion: line 1283 pos 15: '<optimized out>': is not true.
The relevant error-causing widget was
SfCalendar
calendar.dart:41
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
Duplicate GlobalKey detected in widget tree.
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
'package:flutter/src/widgets/framework.dart': Failed assertion: line 6369 pos 12: 'child == _child': is not true.
framework.dart:6369
The relevant error-causing widget was
SfCalendar
calendar.dart:41
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
Duplicate GlobalKey detected in widget tree.
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
'package:flutter/src/widgets/framework.dart': Failed assertion: line 6369 pos 12: 'child == _child': is not true.
framework.dart:6369
The relevant error-causing widget was
SfCalendar
calendar.dart:41
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════
Duplicate GlobalKey detected in widget tree.
════════════════════════════════════════════════════════════════════════════════
class CalendarScreen extends StatefulWidget {
const CalendarScreen({super.key});
@override
State<CalendarScreen> createState() => _CalendarScreenState();
}
class _CalendarScreenState extends State<CalendarScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const Appbar(),
body: Subscription(
options: SubscriptionOptions(
document: gql(getCalTasks), variables: ({"user_id": useruid})),
builder: (result) {
if (result.isLoading) {
return const Center(child: CircularProgressIndicator());
}
return SfCalendar(
firstDayOfWeek: 1,
cellBorderColor: Colors.grey[200],
backgroundColor:
(Theme.of(context).brightness == Brightness.dark)
? Colors.black
: Colors.white,
showDatePickerButton: true,
view: CalendarView.month,
dataSource: MeetingDataSource(_getDataSource(tasks)),
monthViewSettings: const MonthViewSettings(
agendaViewHeight: 100,
agendaItemHeight: 30,
showAgenda: true,
appointmentDisplayMode:
MonthAppointmentDisplayMode.appointment));
}));
}
}
List<Meeting> _getDataSource(List events) {
final List<Meeting> meetings = <Meeting>[];
for (int i = 0; i < events.length; i++) {
meetings.add(Meeting(
events['name'],
events['date'],
events['date'],
colorEntry.value,
true));
}
return meetings;
}
class MeetingDataSource extends CalendarDataSource {
MeetingDataSource(List<Meeting> source) {
appointments = source;
}
@override
DateTime getStartTime(int index) {
return appointments![index].from;
}
@override
DateTime getEndTime(int index) {
return appointments![index].from;
}
@override
String getSubject(int index) {
return appointments![index].eventName;
}
@override
Color getColor(int index) {
return appointments![index].background;
}
@override
bool isAllDay(int index) {
return appointments![index].isAllDay;
}
}
class Meeting {
Meeting(this.eventName, this.from, this.to, this.background, this.isAllDay);
String eventName;
DateTime from;
DateTime to;
Color background;
bool isAllDay;
}
I have also checked that this happens only in iOS simulator and real device not in Android.
However, if I remove the Calendar Screen and set it to any other screen, I don't get any error..
Any help is appreciated