Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
analyzer:
errors:
invalid_dependency: ignore
10 changes: 5 additions & 5 deletions packages/syncfusion_flutter_calendar/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
## [Unreleased version]
** Bug fixes**
## [19.1.54] - 03/30/2021
**Bug fixes**
* Now, the localization is working properly for the spanned appointment count text in Flutter event calendar.

**Features**
* Provided the LoadMore support for the event calendar.
* Provided the negative values support for BYSETPOS in recurrence to display the appointment in the last and second last week of a month.
* Provided the support for the month header format in the Flutter event calendar.
* Provided the support for Getting appointments between the start and end dates in the Flutter event calendar.
* Provided the support for the header date format in the Flutter event calendar.
* Provided the support for getting appointments between the start and end date range by using the `getVisibleAppointments` method in the Flutter event calendar.
* Provided the current time indicator support for timeslot views.
* Provided the support for enabling and disabling the swiping interaction in the Flutter event calendar.
* Provided the support for the selected date changed callback in the Flutter event calendar.
* Improved the timeline views disabled slots appearance in the Flutter event calendar.
* Improved the timeslot views disabled slots appearance in the Flutter event calendar.

**Breaking changes**
* The `startTime` and `endTime` properties of the `Appointment` class are now marked as required.
Expand Down
2 changes: 0 additions & 2 deletions packages/syncfusion_flutter_calendar/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ The Flutter Calendar widget has built-in configurable views such as day, week, w

* **Load more** - Load appointments on-demand whenever users switch from one view to another or when scrolling to the start or end position of the schedule view.

![load_more](https://cdn.syncfusion.com/content/images/FTControl/Flutter/calendar/load_more_gif.gif)

* **Special time regions** - Disable interactions and selections for specific time ranges. This is useful when you want to block user interaction during holidays or another special events and to highlight those time slots.

![special_time_regions](https://cdn.syncfusion.com/content/images/FTControl/Flutter/flutter-calendar-special-time-regions.png)
Expand Down
2 changes: 1 addition & 1 deletion packages/syncfusion_flutter_charts/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter
syncfusion_flutter_charts:
path: ../syncfusion_flutter_charts
path: ../
cupertino_icons: ^1.0.2

flutter:
Expand Down
1 change: 0 additions & 1 deletion packages/syncfusion_flutter_charts/lib/charts.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
library charts;

import 'dart:async';
import 'dart:io' show Platform;
import 'dart:math' as math_lib;
import 'dart:math' as math;
import 'dart:math';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ class _CartesianAxisRendererState extends State<_CartesianAxisRenderer>
if ((widget.chartState._requireInvertedAxis
? axisRenderer._orientation == AxisOrientation.vertical
: axisRenderer._orientation == AxisOrientation.horizontal) &&
// ignore: unnecessary_null_comparison
widget.chartState._oldAxisRenderers != null &&
widget.chartState._oldAxisRenderers.isNotEmpty &&
(axisRenderer._axis.visibleMinimum != null ||
Expand Down Expand Up @@ -390,6 +391,7 @@ class _CartesianAxesPainter extends CustomPainter {
/// To draw chart axes
void _drawAxes(Canvas canvas) {
final double animationFactor =
// ignore: unnecessary_null_comparison
axisAnimation != null ? axisAnimation.value : 1;
for (int axisIndex = 0;
axisIndex < chartState._chartAxis._axisRenderersCollection.length;
Expand All @@ -401,6 +403,7 @@ class _CartesianAxesPainter extends CustomPainter {
(axis.tickPosition == TickPosition.inside) ? true : false;
ChartAxisRenderer? oldAxisRenderer;
bool needAnimate = false;
// ignore: unnecessary_null_comparison
if (chartState._oldAxisRenderers != null &&
chartState._oldAxisRenderers.isNotEmpty &&
axisRenderer._visibleRange != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,7 @@ class _PlotBandPainter extends CustomPainter {
Canvas canvas, ChartAxis axis) {
final List<double> dashArray = plotBand.dashArray;
bool needDashLine = true;
// ignore: unnecessary_null_comparison
if (plotBandRect != null && plotBand.color != null) {
Path? path;
for (int i = 1; i < dashArray.length; i = i + 2) {
Expand Down Expand Up @@ -902,6 +903,7 @@ class _PlotBandPainter extends CustomPainter {
} else {
dashPath = path;
}
// ignore: unnecessary_null_comparison
if (path != null) {
Paint fillPaint;
if (plotBand.gradient != null) {
Expand All @@ -915,7 +917,9 @@ class _PlotBandPainter extends CustomPainter {
}
canvas.drawPath(path, fillPaint);
if (plotBand.borderWidth > 0 &&
// ignore: unnecessary_null_comparison
plotBand.borderColor != null &&
// ignore: unnecessary_null_comparison
dashPath != null) {
canvas.drawPath(
dashPath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1424,6 +1424,7 @@ class SfCartesianChartState extends State<SfCartesianChart>
_needsRepaintChart(
this, _chartAxis._axisRenderersCollection, oldWidgetSeriesRenderers);
_isLegendToggled = false;
// ignore: unnecessary_null_comparison
if (_legendWidgetContext != null && _legendWidgetContext.isNotEmpty) {
_legendWidgetContext.clear();
}
Expand Down Expand Up @@ -1583,6 +1584,7 @@ class SfCartesianChartState extends State<SfCartesianChart>
[SfCartesianChart? oldWidget,
List<CartesianSeriesRenderer>? oldWidgetSeriesRenderers,
List<CartesianSeriesRenderer>? oldWidgetOldSeriesRenderers]) {
// ignore: unnecessary_null_comparison
if (widget.series != null && widget.series.isNotEmpty) {
if (oldWidget != null) {
_oldSeriesRenderers = <CartesianSeriesRenderer>[];
Expand Down Expand Up @@ -1617,6 +1619,7 @@ class SfCartesianChartState extends State<SfCartesianChart>

if (index != null &&
index < oldWidgetOldSeriesRenderers!.length &&
// ignore: unnecessary_null_comparison
oldWidgetOldSeriesRenderers[index] != null) {
seriesRenderer = oldWidgetOldSeriesRenderers[index];
} else {
Expand Down Expand Up @@ -1736,6 +1739,7 @@ class SfCartesianChartState extends State<SfCartesianChart>
}
}
}
// ignore: unnecessary_null_comparison
if (_zoomedAxisRendererStates != null &&
_zoomedAxisRendererStates.isNotEmpty) {
_zoomedState = false;
Expand Down Expand Up @@ -1807,6 +1811,7 @@ class SfCartesianChartState extends State<SfCartesianChart>

Widget _renderTitle() {
Widget titleWidget;
// ignore: unnecessary_null_comparison
if (_chart.title.text != null && _chart.title.text.isNotEmpty) {
final Paint titleBackground = Paint()
..color = _chart.title.borderColor
Expand Down Expand Up @@ -2180,8 +2185,7 @@ class _ContainerArea extends StatelessWidget {
late CartesianSeries<dynamic, dynamic> _series;
late XyDataSeriesRenderer _seriesRenderer;
Offset? _zoomStartPosition;
bool _enableMouseHover =
kIsWeb || Platform.isLinux || Platform.isMacOS || Platform.isWindows;
final bool _enableMouseHover = kIsWeb;
@override
Widget build(BuildContext context) {
final bool isUserInteractionEnabled =
Expand Down Expand Up @@ -2414,6 +2418,7 @@ class _ContainerArea extends StatelessWidget {
_seriesRenderer = _chartState._chartSeries.visibleSeriesRenderers[i]
as XyDataSeriesRenderer;
_series = _seriesRenderer._series;
// ignore: unnecessary_null_comparison
if (_seriesRenderer != null &&
_seriesRenderer._visible! &&
_series.trendlines != null) {
Expand Down Expand Up @@ -2597,6 +2602,7 @@ class _ContainerArea extends StatelessWidget {
.addStatusListener(_seriesRenderer._animationStatusListener);
}
}
// ignore: unnecessary_null_comparison
if (_seriesRenderer != null && _seriesRenderer._visible!) {
_calculateTrendlineRegion(_chartState, _seriesRenderer);
_series.selectionBehavior._chartState = _chartState;
Expand Down Expand Up @@ -2700,7 +2706,7 @@ class _ContainerArea extends StatelessWidget {
..addAll(_series.initialSelectedDataIndexes!);
}
}

// ignore: unnecessary_null_comparison
if (_seriesRenderer._animationController != null &&
_series.animationDuration > 0 &&
(_chartState._oldDeviceOrientation == null ||
Expand Down Expand Up @@ -2757,6 +2763,7 @@ class _ContainerArea extends StatelessWidget {

/// Bind the axis widgets
void _bindAxisWidgets(String renderType) {
// ignore: unnecessary_null_comparison
if (_chartState._chartAxis._axisRenderersCollection != null &&
_chartState._chartAxis._axisRenderersCollection.isNotEmpty &&
_chartState._chartAxis._axisRenderersCollection.length > 1) {
Expand Down Expand Up @@ -2857,6 +2864,7 @@ class _ContainerArea extends StatelessWidget {
}
final Offset position = renderBox.globalToLocal(event.position);
_touchPosition = position;
// ignore: unnecessary_null_comparison
if (_chartState._chartSeries.visibleSeriesRenderers != null &&
_chartState._chartSeries.visibleSeriesRenderers.isNotEmpty &&
chart.selectionGesture == ActivationMode.singleTap &&
Expand All @@ -2873,6 +2881,7 @@ class _ContainerArea extends StatelessWidget {
selectionBehaviorRenderer.onTouchDown(position.dx, position.dy);
}
}
// ignore: unnecessary_null_comparison
if (chart.trackballBehavior != null &&
chart.trackballBehavior.enable &&
chart.trackballBehavior.activationMode == ActivationMode.singleTap) {
Expand All @@ -2884,6 +2893,7 @@ class _ContainerArea extends StatelessWidget {
.onTouchDown(position.dx, position.dy);
}
}
// ignore: unnecessary_null_comparison
if (chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable &&
chart.crosshairBehavior.activationMode == ActivationMode.singleTap) {
Expand Down Expand Up @@ -2936,12 +2946,14 @@ class _ContainerArea extends StatelessWidget {
_chartState._zoomPanBehaviorRenderer._delayRedraw = false;
_chartState._tooltipBehaviorRenderer._isHovering = false;
final Offset position = renderBox.globalToLocal(event.position);
// ignore: unnecessary_null_comparison
if ((chart.trackballBehavior != null &&
chart.trackballBehavior.enable &&
!chart.trackballBehavior.shouldAlwaysShow &&
chart.trackballBehavior.activationMode !=
ActivationMode.doubleTap &&
_chartState._zoomPanBehaviorRenderer._isPinching != true) ||
// ignore: unnecessary_null_comparison
(chart.zoomPanBehavior != null &&
((chart.zoomPanBehavior.enableDoubleTapZooming ||
chart.zoomPanBehavior.enablePanning ||
Expand All @@ -2953,12 +2965,14 @@ class _ContainerArea extends StatelessWidget {

_chartState._trackballBehaviorRenderer._isLongPressActivated = false;
}
// ignore: unnecessary_null_comparison
if ((chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable &&
!chart.crosshairBehavior.shouldAlwaysShow &&
chart.crosshairBehavior.activationMode !=
ActivationMode.doubleTap &&
_chartState._zoomPanBehaviorRenderer._isPinching != true) ||
// ignore: unnecessary_null_comparison
(chart.zoomPanBehavior != null &&
((chart.zoomPanBehavior.enableDoubleTapZooming ||
chart.zoomPanBehavior.enablePanning ||
Expand Down Expand Up @@ -3051,8 +3065,10 @@ class _ContainerArea extends StatelessWidget {
_zoomStartPosition!.dy);
}
}
// ignore: unnecessary_null_comparison
if (chart.trackballBehavior != null &&
chart.trackballBehavior.enable &&
// ignore: unnecessary_null_comparison
_chartState != null &&
chart.trackballBehavior.activationMode != ActivationMode.doubleTap &&
position != null) {
Expand All @@ -3076,13 +3092,15 @@ class _ContainerArea extends StatelessWidget {
}
}
}
// ignore: unnecessary_null_comparison
if (chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable &&
chart.crosshairBehavior.activationMode != ActivationMode.doubleTap &&
position != null) {
if (chart.crosshairBehavior.activationMode == ActivationMode.singleTap) {
_chartState._crosshairBehaviorRenderer
.onTouchMove(position.dx, position.dy);
// ignore: unnecessary_null_comparison
} else if ((chart.crosshairBehavior != null &&
chart.crosshairBehavior.activationMode ==
ActivationMode.longPress &&
Expand Down Expand Up @@ -3140,6 +3158,7 @@ class _ContainerArea extends StatelessWidget {
}
}
}
// ignore: unnecessary_null_comparison
if (_chartState._chartSeries.visibleSeriesRenderers != null &&
position != null &&
chart.selectionGesture == ActivationMode.longPress) {
Expand All @@ -3151,7 +3170,7 @@ class _ContainerArea extends StatelessWidget {
selectionSeriesRenderer;
selectionBehaviorRenderer.onLongPress(position.dx, position.dy);
}

// ignore: unnecessary_null_comparison
if ((chart.trackballBehavior != null &&
chart.trackballBehavior.enable == true &&
chart.trackballBehavior.activationMode ==
Expand All @@ -3166,6 +3185,7 @@ class _ContainerArea extends StatelessWidget {
.onTouchDown(position.dx, position.dy);
}
}
// ignore: unnecessary_null_comparison
if ((chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable == true &&
chart.crosshairBehavior.activationMode ==
Expand All @@ -3183,6 +3203,7 @@ class _ContainerArea extends StatelessWidget {
void _performDoubleTap() {
if (_tapDownDetails != null) {
final Offset position = renderBox.globalToLocal(_tapDownDetails!);
// ignore: unnecessary_null_comparison
if (chart.trackballBehavior != null &&
chart.trackballBehavior.enable &&
chart.trackballBehavior.activationMode == ActivationMode.doubleTap) {
Expand All @@ -3200,6 +3221,7 @@ class _ContainerArea extends StatelessWidget {
_chartState._isTouchUp = false;
_chartState._enableDoubleTap = false;
}
// ignore: unnecessary_null_comparison
if (chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable &&
chart.crosshairBehavior.activationMode == ActivationMode.doubleTap) {
Expand All @@ -3224,6 +3246,7 @@ class _ContainerArea extends StatelessWidget {
.onDoubleTap(position.dx, position.dy);
}
}
// ignore: unnecessary_null_comparison
if (_chartState._chartSeries.visibleSeriesRenderers != null &&
chart.selectionGesture == ActivationMode.doubleTap) {
final CartesianSeriesRenderer selectionSeriesRenderer =
Expand Down Expand Up @@ -3263,6 +3286,7 @@ class _ContainerArea extends StatelessWidget {
}
final bool panInProgress = chart.zoomPanBehavior.enablePanning &&
_chartState._zoomPanBehaviorRenderer._previousMovedPosition != null;
// ignore: unnecessary_null_comparison
if (chart.trackballBehavior != null &&
chart.trackballBehavior.enable &&
position != null &&
Expand All @@ -3277,6 +3301,7 @@ class _ContainerArea extends StatelessWidget {
_chartState._trackballBehaviorRenderer
.onTouchMove(position.dx, position.dy);
}
// ignore: unnecessary_null_comparison
} else if (chart.trackballBehavior != null &&
chart.trackballBehavior.activationMode == ActivationMode.longPress &&
_chartState._trackballBehaviorRenderer._isLongPressActivated ==
Expand All @@ -3290,6 +3315,7 @@ class _ContainerArea extends StatelessWidget {
}
}
}
// ignore: unnecessary_null_comparison
if (chart.crosshairBehavior != null &&
chart.crosshairBehavior.enable &&
chart.crosshairBehavior.activationMode != ActivationMode.doubleTap &&
Expand All @@ -3298,6 +3324,7 @@ class _ContainerArea extends StatelessWidget {
if (chart.crosshairBehavior.activationMode == ActivationMode.singleTap) {
_chartState._crosshairBehaviorRenderer
.onTouchMove(position.dx, position.dy);
// ignore: unnecessary_null_comparison
} else if (chart.crosshairBehavior != null &&
chart.crosshairBehavior.activationMode == ActivationMode.longPress &&
_chartState._crosshairBehaviorRenderer._isLongPressActivated) {
Expand Down Expand Up @@ -3488,6 +3515,7 @@ class _ContainerArea extends StatelessWidget {
chart.trackballBehavior._chartState = chart.tooltipBehavior._chartState =
chart.zoomPanBehavior._chartState =
chart.crosshairBehavior._chartState = _chartState;
// ignore: unnecessary_null_comparison
if (chart.trackballBehavior != null && chart.trackballBehavior.enable) {
if (chart.trackballBehavior.builder != null) {
_chartState._trackballBehaviorRenderer._trackballTemplate =
Expand All @@ -3510,6 +3538,7 @@ class _ContainerArea extends StatelessWidget {
child: CustomPaint(painter: trackballPainter)));
}
}
// ignore: unnecessary_null_comparison
if (chart.crosshairBehavior != null && chart.crosshairBehavior.enable) {
crosshairPainter = _CrosshairPainter(
chartState: _chartState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class _ChartSeries {
final String seriesType = seriesRenderer._seriesType;
final bool needSorting = series.sortingOrder != SortingOrder.none &&
series.sortFieldValueMapper != null;
// ignore: unnecessary_null_comparison
if (series.dataSource != null) {
dynamic xVal;
dynamic yVal;
Expand Down Expand Up @@ -161,6 +162,7 @@ class _ChartSeries {
xMax != null ||
yMin != null ||
yMax != null) &&
// ignore: unnecessary_null_comparison
_chartState._oldSeriesRenderers != null &&
_chartState._oldSeriesRenderers.isNotEmpty) {
final int seriesIndex = _chartState
Expand Down Expand Up @@ -492,6 +494,7 @@ class _ChartSeries {
if (seriesRenderer._dataPoints.isNotEmpty) {
groupName = (seriesRenderer._seriesType.contains('stackedarea'))
? 'stackedareagroup'
// ignore: unnecessary_null_comparison
: (stackedSeriesBase.groupName == null
? ('series ' + i.toString())
: stackedSeriesBase.groupName);
Expand Down Expand Up @@ -786,6 +789,7 @@ class _ChartSeries {

///below method is for indicator rendering
void _calculateIndicators() {
// ignore: unnecessary_null_comparison
if (chart.indicators != null && chart.indicators.isNotEmpty) {
dynamic indicator;
bool existField;
Expand Down
Loading