Search code examples
flutterflutter-layoutsyncfusionsyncfusion-calendar

Failed assertion: line 1205 pos 12: '<optimized out>': is not true


I am new to flutter and facing an issue in Syncfusion Calendar widget. Any help will be appreciated. Here is the code inside my build widget:

  return  Scaffold(
  resizeToAvoidBottomInset: false, // set it to false
  body: SafeArea(
    child: SfCalendar(
                view: CalendarView.month,
                dataSource:getData(),
                monthViewSettings: MonthViewSettings(showAgenda: true,),

      ),
  ),
); 

'dart:ui/painting.dart': Failed assertion: line 1205 pos 12: '': is not true.

Here is the exception line:4 > child: SfCalendar()

Here is the stacktrace:

**> The relevant error-causing widget was: SfCalendar

file:///Users/kashif/Desktop/AppRack/clique/lib/bottomDashboard/Calendar.dart:47:16 When the exception was thrown, this was the stack: #2 Paint.color= (dart:ui/painting.dart:1205:12) #3 _AppointmentRenderObject._drawMonthAppointmentIndicator (package:syncfusion_flutter_calendar/src/calendar/appointment_layout/appointment_layout.dart:2042:15) #4 _AppointmentRenderObject._drawMonthAppointment (package:syncfusion_flutter_calendar/src/calendar/appointment_layout/appointment_layout.dart:1698:9) #5 _AppointmentRenderObject._drawCustomAppointmentView (package:syncfusion_flutter_calendar/src/calendar/appointment_layout/appointment_layout.dart:1662:11) #6 _AppointmentRenderObject.paint (package:syncfusion_flutter_calendar/src/calendar/appointment_layout/appointment_layout.dart:1614:7) #7 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2396:7) #8 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:139:11) #9 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5) #10 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:975:29) #11 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:464:19) #12 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:879:13) #13 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:328:5) #14 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15) #15 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9) #16 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5) #20 _invoke (dart:ui/hooks.dart:163:10) #21 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:259:5) #22 _drawFrame (dart:ui/hooks.dart:126:31) (elided 5 frames from class _AssertionError and dart:async) The following RenderObject was being processed when the exception was fired: _AppointmentRenderObject#b4ead ... needs compositing ... parentData: (can use size) ... constraints: BoxConstraints(w=411.4, h=452.8) ... layer: OffsetLayer#2d0bc ... engine layer: OffsetEngineLayer#fc8e9 ... offset: Offset(0.0, 0.0) ... size: Size(411.4, 452.8) RenderObject: _AppointmentRenderObject#b4ead
needs compositing parentData: (can use size) constraints: BoxConstraints(w=411.4, h=452.8) layer: OffsetLayer#2d0bc engine layer: OffsetEngineLayer#fc8e9 offset: Offset(0.0, 0.0) size: Size(411.4, 452.8) ====================================================================================================**


Solution

  • Based on the provided information we have checked, and we could not reproduce the mentioned issue from our end. We have prepared a simple sample for the same, based on the given stack, we suspect that appointment color set as null in the sample. Please find the code snippet for the same.

    Code snippet:

    import 'package:flutter/material.dart';
    import 'package:flutter/rendering.dart';
    import 'package:flutter/widgets.dart';
    import 'package:syncfusion_flutter_calendar/calendar.dart';
    
    void main() => runApp(AgendaView());
    
    class AgendaView extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          home: Agenda(),
        );
      }
    }
    
    class Agenda extends StatefulWidget {
      @override
      State<StatefulWidget> createState() => AgendaExample();
    }
    
    class AgendaExample extends State<Agenda> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          resizeToAvoidBottomInset: false,
          body: SafeArea(
            child: SfCalendar(
              view: CalendarView.month,
              dataSource: MeetingDateSource(_getDataSource()),
              monthViewSettings: MonthViewSettings(showAgenda: true),
            ),
          ),
        );
      }
    }
    
    List<Meeting> _getDataSource() {
      List<Meeting> meets = <Meeting>[];
      meets.add(Meeting('Meeting', DateTime.now(),
          DateTime.now().add(Duration(minutes: 30)), Colors.pink, true));
      return meets;
    }
    
    class MeetingDateSource extends CalendarDataSource {
      MeetingDateSource(List<Meeting> source) {
        appointments = source;
      }
      @override
      String getSubject(int index) {
        return appointments![index].eventname;
      }
    
      @override
      DateTime getStartTime(int index) {
        return appointments![index].from;
      }
    
      @override
      DateTime getEndTime(int index) {
        return appointments![index].to;
      }
    
      @override
      Color getColor(int index) {
        return appointments![index].bgclr;
      }
    
      @override
      bool isAllDay(int index) {
        return appointments![index].bval;
      }
    }
    
    class Meeting {
      Meeting(this.eventname, this.from, this.to, this.bgclr, this.bval);
      String eventname;
      DateTime from;
      DateTime to;
      Color bgclr;
      bool bval;
    }
    

    If the shared information does not meet your requirement, could you please modify the shared sample to replicate the issue or if possible, share the calendar code snippets used with replication procedure, so that we could analyze further and provide you a possible solution at the earliest.