diff --git a/.gitignore b/.gitignore index 22491239..7f640a14 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ pubspec.lock **/ios/Flutter/flutter_assets/ **/ios/ServiceDefinitions.json **/ios/Runner/GeneratedPluginRegistrant.* +**/ios/Flutter/Flutter.podspec # Exceptions to above rules. !**/ios/**/default.mode1v3 @@ -73,3 +74,4 @@ pubspec.lock !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +mp_chart/.flutter-plugins-dependencies diff --git a/mp_chart/.gitignore b/mp_chart/.gitignore index 9f87252c..f431e925 100644 --- a/mp_chart/.gitignore +++ b/mp_chart/.gitignore @@ -5,9 +5,12 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ +migrate_working_dir/ # IntelliJ related *.iml @@ -22,12 +25,13 @@ # Flutter/Dart/Pub related **/doc/api/ +**/ios/Flutter/.last_build_id .dart_tool/ .flutter-plugins -.packages +.flutter-plugins-dependencies .pub-cache/ .pub/ -build/ +/build/ # Android related **/android/**/gradle-wrapper.jar diff --git a/mp_chart/CHANGELOG.md b/mp_chart/CHANGELOG.md index da871564..0014415c 100644 --- a/mp_chart/CHANGELOG.md +++ b/mp_chart/CHANGELOG.md @@ -1,3 +1,55 @@ +## 1.8.0 2025-08-04 +* Flutter 3.32 updates +* Upgrade dependencies +## 1.7.1 2024-10-08 +* Example app: Upgrade kotlin plugin from 1.7.20 to 1.8.22 and Gradle from 8.2 to 8.3, to sync it with Flutter 3.24 +## 1.7.0 2024-09-20 +* Update example Gradle to 8.2 DSL +* BREAKING: Update minimum supported Flutter to 3.22, Dart to 3.3 +## 1.6.0 2024-08-31 +* Flutter 3.22 updates +* Upgrade dependencies path_provider, screenshot +* Upgrade example app dependencies url_launcher , permission_handler, cupertino_icons +## 1.5.0 2023-12-21 +* Rename Easing to MpEasing to not conflict with Flutter Easing +* Export most classes in mp_chart so that users only import mp_chart instead of individual classes +* Flutter 3.16 updates +* Upgrade dependencies intl +* Upgrade example app dependencies url_launcher, permission_handler, intl +## 1.4.0 2023-10-27 +* Update sdk constraints to >=3.0.0 <4.0.0 +* Upgrade dependencies intl, path_provider +* Upgrade example app dependencies url_launcher, permission_handler, cupertino_icons, intl +## 1.3.0 2023-06-11 +* Flutter 3.10 updates +* Upgrade dependencies intl, screenshot, permission_handler +## 1.2.2 2023-06-03 +* Upgrade dependencies path_provider, url_launcher +## 1.2.1 2023-03-17 +* Flutter 3.7 updates +* Null safety cleanups +* BarLineChartBasePainter getData, getAxisRange getter improvements +* Upgrade dependency vector_math +* Bump sdk constraints to >=2.18.0 +## 1.2.0 2023-03-13 +* Disable image saver(image_gallery_saver) for now, as it's using a very old kotlin-gradle-plugin +## 1.1.0 2023-03-13 +* Upgrade dependencies path_provider, screenshot, url_launcher, permission_handler +## 1.0.0 2022-10-16 +* Flutter 3.3 fixes +* Upgrade dependencies path_provider, path_drawing, optimized_gesture_detector +* bump sdk from >=2.12.0 to >=2.17.0 +* Example app: + ** Upgrade dependencies, url_launcher, permission_handler, cupertino_icons +## 0.3.3 2022-05-16 +* Flutter 3 fixes. +* Upgrade dependencies path_provider, vector_math. +* Example app: +** Use Uri instead of deprecated String in launchUrl +** Upgrade dependencies, url_launcher, permission_handler +## 0.3.2 2022-02-06 +* Null safety updates. +* Upgrade dependencies. ## 0.3.1 2020-10-30 * Updated for Flutter 1.22.0 to use updated Dart intl package 0.17.0-nullsafety.1. ## 0.3.0 2020-09-18 diff --git a/mp_chart/example/android/app/build.gradle b/mp_chart/example/android/app/build.gradle index 931d114f..6a0cc0f3 100644 --- a/mp_chart/example/android/app/build.gradle +++ b/mp_chart/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,21 +22,28 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { - compileSdkVersion 28 + namespace "com.lqy.example" + compileSdkVersion flutter.compileSdkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = '11' + } - lintOptions { - disable 'InvalidPackage' + sourceSets { + main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.lqy.example" - minSdkVersion 16 - targetSdkVersion 28 + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/mp_chart/example/android/app/src/main/AndroidManifest.xml b/mp_chart/example/android/app/src/main/AndroidManifest.xml index f37d6ec6..a5ceb1be 100644 --- a/mp_chart/example/android/app/src/main/AndroidManifest.xml +++ b/mp_chart/example/android/app/src/main/AndroidManifest.xml @@ -18,7 +18,8 @@ android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:exported="true"> zoom out, if > 1f --> zoom in /// @param x /// @param y - void zoom(double scaleX, double scaleY, double x, double y) { + void zoom(double scaleX, double scaleY, double? x, double? y) { if (scaleX.isInfinite || scaleX.isNaN || scaleY.isInfinite || @@ -599,17 +602,17 @@ abstract class BarLineChartBasePainter< return; } - viewPortHandler.zoom4(scaleX, scaleY, x, -y, _zoomMatrixBuffer); - viewPortHandler.refresh(_zoomMatrixBuffer); + viewPortHandler!.zoom4(scaleX, scaleY, x!, -y!, _zoomMatrixBuffer!); + viewPortHandler!.refresh(_zoomMatrixBuffer); if (_chartTransListener != null) { _chartTransListener.scale(scaleX, scaleY, x, y); } } void translate(double dx, double dy) { - Matrix4Utils.postTranslate(viewPortHandler.matrixTouch, dx, dy); - viewPortHandler.limitTransAndScale( - viewPortHandler.matrixTouch, viewPortHandler.contentRect); + Matrix4Utils.postTranslate(viewPortHandler!.matrixTouch, dx, dy); + viewPortHandler!.limitTransAndScale( + viewPortHandler!.matrixTouch, viewPortHandler!.contentRect); if (_chartTransListener != null) { _chartTransListener.translate(dx, dy); } @@ -622,7 +625,7 @@ abstract class BarLineChartBasePainter< /// @param axis the axis for which this limit should apply void setVisibleYRangeMaximum(double maxYRange, AxisDependency axis) { double yScale = getAxisRange(axis) / maxYRange; - viewPortHandler.setMinimumScaleY(yScale); + viewPortHandler!.setMinimumScaleY(yScale); } /// Sets the size of the area (range on the y-axis) that should be minimum visible at once, no further zooming in possible. @@ -631,7 +634,7 @@ abstract class BarLineChartBasePainter< /// @param axis the axis for which this limit should apply void setVisibleYRangeMinimum(double minYRange, AxisDependency axis) { double yScale = getAxisRange(axis) / minYRange; - viewPortHandler.setMaximumScaleY(yScale); + viewPortHandler!.setMaximumScaleY(yScale); } /// Limits the maximum and minimum y range that can be visible by pinching and zooming. @@ -641,9 +644,10 @@ abstract class BarLineChartBasePainter< /// @param axis void setVisibleYRange( double minYRange, double maxYRange, AxisDependency axis) { - double minScale = getAxisRange(axis) / minYRange; - double maxScale = getAxisRange(axis) / maxYRange; - viewPortHandler.setMinMaxScaleY(minScale, maxScale); + final axisRange = getAxisRange(axis); + double minScale = axisRange / minYRange; + double maxScale = axisRange / maxYRange; + viewPortHandler!.setMinMaxScaleY(minScale, maxScale); } /** @@ -657,12 +661,12 @@ abstract class BarLineChartBasePainter< /// @return double getAxisRange(AxisDependency axis) { if (axis == AxisDependency.LEFT) - return _axisLeft.axisRange; + return _axisLeft!.axisRange; else - return _axisRight.axisRange; + return _axisRight!.axisRange; } - List mGetPositionBuffer = List(2); + List mGetPositionBuffer = []..length = 2; /// Returns a recyclable MPPointF instance. /// Returns the position (in pixels) the provided Entry has inside the chart @@ -670,13 +674,11 @@ abstract class BarLineChartBasePainter< /// /// @param e /// @return - MPPointF getPosition(Entry e, AxisDependency axis) { - if (e == null) return null; - + MPPointF? getPosition(Entry e, AxisDependency axis) { mGetPositionBuffer[0] = e.x; mGetPositionBuffer[1] = e.y; - getTransformer(axis).pointValuesToPixel(mGetPositionBuffer); + getTransformer(axis)!.pointValuesToPixel(mGetPositionBuffer); return MPPointF.getInstance1(mGetPositionBuffer[0], mGetPositionBuffer[1]); } @@ -686,21 +688,21 @@ abstract class BarLineChartBasePainter< /// /// @param color void setGridBackgroundColor(Color color) { - _gridBackgroundPaint..color = color; + _gridBackgroundPaint!..color = color; } /// Sets the width of the border lines in dp. /// /// @param width void setBorderWidth(double width) { - _borderPaint..strokeWidth = Utils.convertDpToPixel(width); + _borderPaint!..strokeWidth = Utils.convertDpToPixel(width)!; } /// Sets the color of the chart border lines. /// /// @param color void setBorderColor(Color color) { - _borderPaint..color = color; + _borderPaint!..color = color; } /// Returns a recyclable MPPointD instance @@ -720,7 +722,7 @@ abstract class BarLineChartBasePainter< void getValuesByTouchPoint2( double x, double y, AxisDependency axis, MPPointD outputPoint) { - getTransformer(axis).getValuesByTouchPoint2(x, y, outputPoint); + getTransformer(axis)!.getValuesByTouchPoint2(x, y, outputPoint); } /// Returns a recyclable MPPointD instance @@ -731,7 +733,7 @@ abstract class BarLineChartBasePainter< /// @param y /// @return MPPointD getPixelForValues(double x, double y, AxisDependency axis) { - return getTransformer(axis).getPixelForValues(x, y); + return getTransformer(axis)!.getPixelForValues(x, y); } /// returns the Entry object displayed at the touched position of the chart @@ -739,10 +741,10 @@ abstract class BarLineChartBasePainter< /// @param x /// @param y /// @return - Entry getEntryByTouchPoint(double x, double y) { - Highlight h = getHighlightByTouchPoint(x, y); + Entry? getEntryByTouchPoint(double x, double y) { + Highlight? h = getHighlightByTouchPoint(x, y); if (h != null) { - return getData().getEntryForHighlight(h); + return getData()!.getEntryForHighlight(h); } return null; } @@ -752,11 +754,11 @@ abstract class BarLineChartBasePainter< /// @param x /// @param y /// @return - IBarLineScatterCandleBubbleDataSet getDataSetByTouchPoint( + IBarLineScatterCandleBubbleDataSet? getDataSetByTouchPoint( double x, double y) { - Highlight h = getHighlightByTouchPoint(x, y); + Highlight? h = getHighlightByTouchPoint(x, y); if (h != null) { - return getData().getDataSetByIndex(h.dataSetIndex); + return getData()!.getDataSetByIndex(h.dataSetIndex); } return null; } @@ -770,11 +772,11 @@ abstract class BarLineChartBasePainter< /// @return @override double getLowestVisibleX() { - getTransformer(AxisDependency.LEFT).getValuesByTouchPoint2( - viewPortHandler.contentLeft(), - viewPortHandler.contentBottom(), + getTransformer(AxisDependency.LEFT)!.getValuesByTouchPoint2( + viewPortHandler!.contentLeft(), + viewPortHandler!.contentBottom(), posForGetLowestVisibleX); - double result = max(xAxis.axisMinimum, posForGetLowestVisibleX.x); + double result = max(xAxis!.axisMinimum!, posForGetLowestVisibleX.x!); return result; } @@ -787,11 +789,11 @@ abstract class BarLineChartBasePainter< /// @return @override double getHighestVisibleX() { - getTransformer(AxisDependency.LEFT).getValuesByTouchPoint2( - viewPortHandler.contentRight(), - viewPortHandler.contentBottom(), + getTransformer(AxisDependency.LEFT)!.getValuesByTouchPoint2( + viewPortHandler!.contentRight(), + viewPortHandler!.contentBottom(), posForGetHighestVisibleX); - double result = min(xAxis.axisMaximum, posForGetHighestVisibleX.x); + double result = min(xAxis!.axisMaximum!, posForGetHighestVisibleX.x!); return result; } @@ -807,7 +809,7 @@ abstract class BarLineChartBasePainter< if (viewPortHandler == null) return 1; else - return viewPortHandler.getScaleX(); + return viewPortHandler!.getScaleX(); } /// returns the current y-scale factor @@ -815,14 +817,14 @@ abstract class BarLineChartBasePainter< if (viewPortHandler == null) return 1; else - return viewPortHandler.getScaleY(); + return viewPortHandler!.getScaleY(); } /// if the chart is fully zoomed out, return true /// /// @return bool isFullyZoomedOut() { - return viewPortHandler.isFullyZoomedOut(); + return viewPortHandler!.isFullyZoomedOut(); } /// Returns the y-axis object to the corresponding AxisDependency. In the @@ -830,7 +832,7 @@ abstract class BarLineChartBasePainter< /// /// @param axis /// @return - YAxis getAxis(AxisDependency axis) { + YAxis? getAxis(AxisDependency axis) { if (axis == AxisDependency.LEFT) return _axisLeft; else @@ -839,7 +841,7 @@ abstract class BarLineChartBasePainter< @override bool isInverted(AxisDependency axis) { - return getAxis(axis).inverted; + return getAxis(axis)!.inverted; } /// Set an offset in dp that allows the user to drag the chart over it's @@ -847,7 +849,7 @@ abstract class BarLineChartBasePainter< /// /// @param offset void setDragOffsetX(double offset) { - viewPortHandler.setDragOffsetX(offset); + viewPortHandler!.setDragOffsetX(offset); } /// Set an offset in dp that allows the user to drag the chart over it's @@ -855,24 +857,24 @@ abstract class BarLineChartBasePainter< /// /// @param offset void setDragOffsetY(double offset) { - viewPortHandler.setDragOffsetY(offset); + viewPortHandler!.setDragOffsetY(offset); } /// Returns true if both drag offsets (x and y) are zero or smaller. /// /// @return bool hasNoDragOffset() { - return viewPortHandler.hasNoDragOffset(); + return viewPortHandler!.hasNoDragOffset(); } @override double getYChartMax() { - return max(_axisLeft.axisMaximum, _axisRight.axisMaximum); + return max(_axisLeft!.axisMaximum!, _axisRight!.axisMaximum!); } @override double getYChartMin() { - return min(_axisLeft.axisMinimum, _axisRight.axisMinimum); + return min(_axisLeft!.axisMinimum!, _axisRight!.axisMinimum!); } @override @@ -881,38 +883,39 @@ abstract class BarLineChartBasePainter< } @override - BarLineScatterCandleBubbleData getData() { - return super.getData(); + BarLineScatterCandleBubbleData? getData() { + return super.getData() as BarLineScatterCandleBubbleData< + IBarLineScatterCandleBubbleDataSet>?; } /// Returns true if either the left or the right or both axes are inverted. /// /// @return bool isAnyAxisInverted() { - if (_axisLeft.inverted) return true; - if (_axisRight.inverted) return true; + if (_axisLeft!.inverted) return true; + if (_axisRight!.inverted) return true; return false; } - bool updateEntry(int index, Entry entry, int dataSetIndex){ - var dataSet = getData().getDataSetByIndex(dataSetIndex); - if(dataSet == null) { + bool updateEntry(int index, Entry entry, int dataSetIndex) { + final dataSet = getData()!.getDataSetByIndex(dataSetIndex); + if (dataSet == null) { return false; } return dataSet.updateEntryByIndex(index, entry); } - void addEntryByIndex(int index, Entry entry, int dataSetIndex){ - var dataSet = getData().getDataSetByIndex(dataSetIndex); - if(dataSet != null){ + void addEntryByIndex(int index, Entry entry, int dataSetIndex) { + final dataSet = getData()!.getDataSetByIndex(dataSetIndex); + if (dataSet != null) { dataSet.addEntryByIndex(index, entry); } } - void addEntry(Entry entry, int dataSetIndex){ - var dataSet = getData().getDataSetByIndex(dataSetIndex); - if(dataSet != null) { + void addEntry(Entry entry, int dataSetIndex) { + final dataSet = getData()!.getDataSetByIndex(dataSetIndex); + if (dataSet != null) { addEntryByIndex(dataSet.getEntryCount(), entry, dataSetIndex); } } diff --git a/mp_chart/lib/mp/painter/bubble_chart_painter.dart b/mp_chart/lib/mp/painter/bubble_chart_painter.dart index fc974bc7..2c0666d8 100644 --- a/mp_chart/lib/mp/painter/bubble_chart_painter.dart +++ b/mp_chart/lib/mp/painter/bubble_chart_painter.dart @@ -18,29 +18,29 @@ import 'package:mp_chart/mp/core/transformer/transformer.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/bar_line_chart_painter.dart'; -class BubbleChartPainter extends BarLineChartBasePainter +class BubbleChartPainter extends BarLineChartBasePainter implements BubbleDataProvider { BubbleChartPainter( - BubbleData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + BubbleData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -50,25 +50,25 @@ class BubbleChartPainter extends BarLineChartBasePainter bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, - ChartTransListener chartTransListener) + ChartTransListener? chartTransListener) : super( data, animator, @@ -126,7 +126,7 @@ class BubbleChartPainter extends BarLineChartBasePainter } @override - BubbleData getBubbleData() { - return getData(); + BubbleData? getBubbleData() { + return getData() as BubbleData?; } } diff --git a/mp_chart/lib/mp/painter/candlestick_chart_painter.dart b/mp_chart/lib/mp/painter/candlestick_chart_painter.dart index c23786de..f60add74 100644 --- a/mp_chart/lib/mp/painter/candlestick_chart_painter.dart +++ b/mp_chart/lib/mp/painter/candlestick_chart_painter.dart @@ -18,29 +18,29 @@ import 'package:mp_chart/mp/core/transformer/transformer.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/bar_line_chart_painter.dart'; -class CandlestickChartPainter extends BarLineChartBasePainter +class CandlestickChartPainter extends BarLineChartBasePainter implements CandleDataProvider { CandlestickChartPainter( - CandleData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + CandleData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -50,25 +50,25 @@ class CandlestickChartPainter extends BarLineChartBasePainter bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, - ChartTransListener chartTransListener) + ChartTransListener? chartTransListener) : super( data, animator, @@ -123,12 +123,12 @@ class CandlestickChartPainter extends BarLineChartBasePainter void initDefaultWithData() { super.initDefaultWithData(); renderer = CandleStickChartRenderer(this, animator, viewPortHandler); - xAxis.spaceMin = (0.5); - xAxis.spaceMax = (0.5); + xAxis!.spaceMin = (0.5); + xAxis!.spaceMax = (0.5); } @override - CandleData getCandleData() { - return getData(); + CandleData? getCandleData() { + return getData() as CandleData?; } } diff --git a/mp_chart/lib/mp/painter/combined_chart_painter.dart b/mp_chart/lib/mp/painter/combined_chart_painter.dart index 01c4cf27..5e283b81 100644 --- a/mp_chart/lib/mp/painter/combined_chart_painter.dart +++ b/mp_chart/lib/mp/painter/combined_chart_painter.dart @@ -1,4 +1,3 @@ -import 'package:flutter/painting.dart'; import 'package:flutter/rendering.dart'; import 'package:mp_chart/mp/core/animator.dart'; import 'package:mp_chart/mp/core/axis/x_axis.dart'; @@ -30,7 +29,7 @@ import 'package:mp_chart/mp/painter/bar_line_chart_painter.dart'; enum DrawOrder { BAR, BUBBLE, LINE, CANDLE, SCATTER } -class CombinedChartPainter extends BarLineChartBasePainter +class CombinedChartPainter extends BarLineChartBasePainter implements CombinedDataProvider { /// if set to true, all values are drawn above their bars, instead of below /// their top @@ -43,29 +42,29 @@ class CombinedChartPainter extends BarLineChartBasePainter /// maximum value bool _drawBarShadow = false; - List _drawOrder; + List? _drawOrder; CombinedChartPainter( - CombinedData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + CombinedData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -75,30 +74,30 @@ class CombinedChartPainter extends BarLineChartBasePainter bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, bool highlightFullBarEnabled, bool drawValueAboveBar, bool drawBarShadow, bool fitBars, - List drawOrder, - ChartTransListener chartTransListener) + List? drawOrder, + ChartTransListener? chartTransListener) : _drawBarShadow = drawBarShadow, _highlightFullBarEnabled = highlightFullBarEnabled, _drawValueAboveBar = drawValueAboveBar, @@ -154,12 +153,13 @@ class CombinedChartPainter extends BarLineChartBasePainter chartTransListener); List initDrawOrder() { - return List() - ..add(DrawOrder.BAR) - ..add(DrawOrder.BUBBLE) - ..add(DrawOrder.LINE) - ..add(DrawOrder.CANDLE) - ..add(DrawOrder.SCATTER); + return [ + DrawOrder.BAR, + DrawOrder.BUBBLE, + DrawOrder.LINE, + DrawOrder.CANDLE, + DrawOrder.SCATTER + ]; } @override @@ -169,12 +169,12 @@ class CombinedChartPainter extends BarLineChartBasePainter highlighter = CombinedHighlighter(this, this); renderer = CombinedChartRenderer(this, animator, viewPortHandler); (renderer as CombinedChartRenderer).createRenderers(); - renderer.initBuffers(); + renderer!.initBuffers(); } @override - CombinedData getCombinedData() { - return getData(); + CombinedData? getCombinedData() { + return getData() as CombinedData?; } /// Returns the Highlight object (contains x-index and DataSet index) of the selected value at the given touch @@ -185,11 +185,11 @@ class CombinedChartPainter extends BarLineChartBasePainter /// @param y /// @return @override - Highlight getHighlightByTouchPoint(double x, double y) { + Highlight? getHighlightByTouchPoint(double x, double y) { if (getCombinedData() == null) { return null; } else { - Highlight h = highlighter.getHighlight(x, y); + Highlight? h = highlighter!.getHighlight(x, y); if (h == null || !isHighlightFullBarEnabled()) return h; // For isHighlightFullBarEnabled, remove stackIndex @@ -206,33 +206,33 @@ class CombinedChartPainter extends BarLineChartBasePainter } @override - LineData getLineData() { + LineData? getLineData() { if (getCombinedData() == null) return null; - return getCombinedData().getLineData(); + return getCombinedData()!.getLineData(); } @override - BarData getBarData() { + BarData? getBarData() { if (getCombinedData() == null) return null; - return getCombinedData().getBarData(); + return getCombinedData()!.getBarData(); } @override - ScatterData getScatterData() { + ScatterData? getScatterData() { if (getCombinedData() == null) return null; - return getCombinedData().getScatterData(); + return getCombinedData()!.getScatterData(); } @override - CandleData getCandleData() { + CandleData? getCandleData() { if (getCombinedData() == null) return null; - return getCombinedData().getCandleData(); + return getCombinedData()!.getCandleData(); } @override - BubbleData getBubbleData() { + BubbleData? getBubbleData() { if (getCombinedData() == null) return null; - return getCombinedData().getBubbleData(); + return getCombinedData()!.getBubbleData(); } @override @@ -278,7 +278,7 @@ class CombinedChartPainter extends BarLineChartBasePainter /// Returns the currently set draw order. /// /// @return - List getDrawOrder() { + List? getDrawOrder() { return _drawOrder; } @@ -289,7 +289,7 @@ class CombinedChartPainter extends BarLineChartBasePainter /// /// @param order void setDrawOrder(List order) { - if (order == null || order.length <= 0) return; + if (order.length <= 0) return; _drawOrder = order; } @@ -298,29 +298,29 @@ class CombinedChartPainter extends BarLineChartBasePainter // if there is no marker view or drawing marker is disabled if (marker == null || !isDrawMarkers || !valuesToHighlight()) return; - for (int i = 0; i < indicesToHighlight.length; i++) { - Highlight highlight = indicesToHighlight[i]; + for (int i = 0; i < indicesToHighlight!.length; i++) { + Highlight highlight = indicesToHighlight![i]; - IDataSet set = getCombinedData().getDataSetByHighlight(highlight); + IDataSet? set = getCombinedData()!.getDataSetByHighlight(highlight); - Entry e = getCombinedData().getEntryForHighlight(highlight); + Entry? e = getCombinedData()!.getEntryForHighlight(highlight); if (e == null) continue; - int entryIndex = set.getEntryIndex2(e); + int entryIndex = set!.getEntryIndex2(e); // make sure entry not null - if (entryIndex > set.getEntryCount() * animator.getPhaseX()) continue; + if (entryIndex > set.getEntryCount() * animator!.getPhaseX()) continue; - List pos = getMarkerPosition(highlight); + List pos = getMarkerPosition(highlight); // check bounds - if (!viewPortHandler.isInBounds(pos[0], pos[1])) continue; + if (!viewPortHandler!.isInBounds(pos[0], pos[1])) continue; // callbacks to update the content - marker.refreshContent(e, highlight); + marker!.refreshContent(e, highlight); // draw the marker - marker.draw(canvas, pos[0], pos[1]); + marker!.draw(canvas, pos[0], pos[1]); } } } diff --git a/mp_chart/lib/mp/painter/horizontal_bar_chart_painter.dart b/mp_chart/lib/mp/painter/horizontal_bar_chart_painter.dart index 5b968f1e..b47d74cd 100644 --- a/mp_chart/lib/mp/painter/horizontal_bar_chart_painter.dart +++ b/mp_chart/lib/mp/painter/horizontal_bar_chart_painter.dart @@ -1,7 +1,5 @@ import 'dart:math'; -import 'dart:ui'; -import 'package:flutter/painting.dart'; import 'package:flutter/rendering.dart'; import 'package:mp_chart/mp/core/animator.dart'; import 'package:mp_chart/mp/core/axis/x_axis.dart'; @@ -32,26 +30,26 @@ import 'package:mp_chart/mp/painter/bar_chart_painter.dart'; class HorizontalBarChartPainter extends BarChartPainter { HorizontalBarChartPainter( - BarData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + BarData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -61,29 +59,29 @@ class HorizontalBarChartPainter extends BarChartPainter { bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, bool highlightFullBarEnabled, bool drawValueAboveBar, bool drawBarShadow, bool fitBars, - ChartTransListener chartTransListener) + ChartTransListener? chartTransListener) : super( data, animator, @@ -149,7 +147,7 @@ class HorizontalBarChartPainter extends BarChartPainter { @override void calculateOffsets() { - if (legend != null) legendRenderer.computeLegend(getBarData()); + if (legend != null) legendRenderer!.computeLegend(getBarData()); renderer?.initBuffers(); calcMinMax(); @@ -163,25 +161,25 @@ class HorizontalBarChartPainter extends BarChartPainter { offsetBottom += _offsetsBuffer.bottom; // offsets for y-labels - if (axisLeft.needsOffset()) { + if (axisLeft!.needsOffset()) { offsetTop += - axisLeft.getRequiredHeightSpace(axisRendererLeft.axisLabelPaint); + axisLeft!.getRequiredHeightSpace(axisRendererLeft!.axisLabelPaint); } - if (axisRight.needsOffset()) { + if (axisRight!.needsOffset()) { offsetBottom += - axisRight.getRequiredHeightSpace(axisRendererRight.axisLabelPaint); + axisRight!.getRequiredHeightSpace(axisRendererRight!.axisLabelPaint); } - double xlabelwidth = xAxis.labelRotatedWidth.toDouble(); + double xlabelwidth = xAxis!.labelRotatedWidth.toDouble(); - if (xAxis.enabled) { + if (xAxis!.enabled) { // offsets for x-labels - if (xAxis.position == XAxisPosition.BOTTOM) { + if (xAxis!.position == XAxisPosition.BOTTOM) { offsetLeft += xlabelwidth; - } else if (xAxis.position == XAxisPosition.TOP) { + } else if (xAxis!.position == XAxisPosition.TOP) { offsetRight += xlabelwidth; - } else if (xAxis.position == XAxisPosition.BOTH_SIDED) { + } else if (xAxis!.position == XAxisPosition.BOTH_SIDED) { offsetLeft += xlabelwidth; offsetRight += xlabelwidth; } @@ -192,9 +190,9 @@ class HorizontalBarChartPainter extends BarChartPainter { offsetBottom += extraBottomOffset; offsetLeft += extraLeftOffset; - double offset = Utils.convertDpToPixel(minOffset); + double offset = Utils.convertDpToPixel(minOffset)!; - viewPortHandler.restrainViewPort( + viewPortHandler!.restrainViewPort( max(offset, offsetLeft), max(offset, offsetTop), max(offset, offsetRight), @@ -206,21 +204,21 @@ class HorizontalBarChartPainter extends BarChartPainter { @override void prepareValuePxMatrix() { - rightAxisTransformer.prepareMatrixValuePx(axisRight.axisMinimum, - axisRight.axisRange, xAxis.axisRange, xAxis.axisMinimum); - leftAxisTransformer.prepareMatrixValuePx(axisLeft.axisMinimum, - axisLeft.axisRange, xAxis.axisRange, xAxis.axisMinimum); + rightAxisTransformer!.prepareMatrixValuePx(axisRight!.axisMinimum!, + axisRight!.axisRange, xAxis!.axisRange, xAxis!.axisMinimum!); + leftAxisTransformer!.prepareMatrixValuePx(axisLeft!.axisMinimum!, + axisLeft!.axisRange, xAxis!.axisRange, xAxis!.axisMinimum!); } @override - List getMarkerPosition(Highlight high) { - return new List()..add(high.drawY)..add(high.drawX); + List getMarkerPosition(Highlight high) { + return [high.drawY,high.drawX];//new List()..add(high.drawY)..add(high.drawX); } @override Rect getBarBounds(BarEntry e) { Rect bounds = Rect.zero; - IBarDataSet set = getBarData().getDataSetForEntry(e); + IBarDataSet? set = getBarData()!.getDataSetForEntry(e); if (set == null) { bounds = Rect.fromLTRB(double.minPositive, double.minPositive, @@ -228,10 +226,10 @@ class HorizontalBarChartPainter extends BarChartPainter { return bounds; } - double y = e.y; - double x = e.x; + double y = e.y!; + double x = e.x!; - double barWidth = getBarData().barWidth; + double barWidth = getBarData()!.barWidth; double top = x - barWidth / 2; double bottom = x + barWidth / 2; @@ -240,10 +238,10 @@ class HorizontalBarChartPainter extends BarChartPainter { bounds = Rect.fromLTRB(left, top, right, bottom); - return getTransformer(set.getAxisDependency()).rectValueToPixel(bounds); + return getTransformer(set.getAxisDependency())!.rectValueToPixel(bounds); } - List mGetPositionBuffer = List(2); + List mGetPositionBuffer = []..length = 2; /// Returns a recyclable MPPointF instance. /// @@ -251,14 +249,12 @@ class HorizontalBarChartPainter extends BarChartPainter { /// @param axis /// @return @override - MPPointF getPosition(Entry e, AxisDependency axis) { - if (e == null) return null; - - List vals = mGetPositionBuffer; + MPPointF? getPosition(Entry e, AxisDependency axis) { + List vals = mGetPositionBuffer; vals[0] = e.y; vals[1] = e.x; - getTransformer(axis).pointValuesToPixel(vals); + getTransformer(axis)!.pointValuesToPixel(vals); return MPPointF.getInstance1(vals[0], vals[1]); } @@ -270,30 +266,30 @@ class HorizontalBarChartPainter extends BarChartPainter { /// @param y /// @return @override - Highlight getHighlightByTouchPoint(double x, double y) { + Highlight? getHighlightByTouchPoint(double x, double y) { if (getBarData() != null) { - return highlighter.getHighlight(y, x); // switch x and y + return highlighter!.getHighlight(y, x); // switch x and y } return null; } @override double getLowestVisibleX() { - getTransformer(AxisDependency.LEFT).getValuesByTouchPoint2( - viewPortHandler.contentLeft(), - viewPortHandler.contentBottom(), + getTransformer(AxisDependency.LEFT)!.getValuesByTouchPoint2( + viewPortHandler!.contentLeft(), + viewPortHandler!.contentBottom(), posForGetLowestVisibleX); - double result = max(xAxis.axisMinimum, posForGetLowestVisibleX.y); + double result = max(xAxis!.axisMinimum!, posForGetLowestVisibleX.y!); return result; } @override double getHighestVisibleX() { - getTransformer(AxisDependency.LEFT).getValuesByTouchPoint2( - viewPortHandler.contentLeft(), - viewPortHandler.contentTop(), + getTransformer(AxisDependency.LEFT)!.getValuesByTouchPoint2( + viewPortHandler!.contentLeft(), + viewPortHandler!.contentTop(), posForGetHighestVisibleX); - double result = min(xAxis.axisMaximum, posForGetHighestVisibleX.y); + double result = min(xAxis!.axisMaximum!, posForGetHighestVisibleX.y!); return result; } @@ -318,13 +314,13 @@ class HorizontalBarChartPainter extends BarChartPainter { @override void setVisibleYRangeMaximum(double maxYRange, AxisDependency axis) { double yScale = getAxisRange(axis) / maxYRange; - viewPortHandler.setMinimumScaleX(yScale); + viewPortHandler!.setMinimumScaleX(yScale); } @override void setVisibleYRangeMinimum(double minYRange, AxisDependency axis) { double yScale = getAxisRange(axis) / minYRange; - viewPortHandler.setMaximumScaleX(yScale); + viewPortHandler!.setMaximumScaleX(yScale); } @override @@ -332,6 +328,6 @@ class HorizontalBarChartPainter extends BarChartPainter { double minYRange, double maxYRange, AxisDependency axis) { double minScale = getAxisRange(axis) / minYRange; double maxScale = getAxisRange(axis) / maxYRange; - viewPortHandler.setMinMaxScaleX(minScale, maxScale); + viewPortHandler!.setMinMaxScaleX(minScale, maxScale); } } diff --git a/mp_chart/lib/mp/painter/line_chart_painter.dart b/mp_chart/lib/mp/painter/line_chart_painter.dart index 3bb0f4d5..5f5c8fb0 100644 --- a/mp_chart/lib/mp/painter/line_chart_painter.dart +++ b/mp_chart/lib/mp/painter/line_chart_painter.dart @@ -1,4 +1,3 @@ -import 'package:flutter/painting.dart'; import 'package:flutter/rendering.dart'; import 'package:mp_chart/mp/core/animator.dart'; import 'package:mp_chart/mp/core/axis/x_axis.dart'; @@ -19,29 +18,29 @@ import 'package:mp_chart/mp/core/transformer/transformer.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/bar_line_chart_painter.dart'; -class LineChartPainter extends BarLineChartBasePainter +class LineChartPainter extends BarLineChartBasePainter implements LineDataProvider { LineChartPainter( - LineData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + LineData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -51,25 +50,25 @@ class LineChartPainter extends BarLineChartBasePainter bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, - ChartTransListener chartTransListener) + ChartTransListener? chartTransListener) : super( data, animator, @@ -127,7 +126,7 @@ class LineChartPainter extends BarLineChartBasePainter } @override - LineData getLineData() { - return getData(); + LineData? getLineData() { + return getData() as LineData?; } } diff --git a/mp_chart/lib/mp/painter/painter.dart b/mp_chart/lib/mp/painter/painter.dart index 901510ac..4c6fafa5 100644 --- a/mp_chart/lib/mp/painter/painter.dart +++ b/mp_chart/lib/mp/painter/painter.dart @@ -22,21 +22,20 @@ import 'package:mp_chart/mp/core/value_formatter/default_value_formatter.dart'; import 'package:mp_chart/mp/core/value_formatter/value_formatter.dart'; import 'package:mp_chart/mp/core/view_port.dart'; -abstract class ChartPainter>> - extends CustomPainter - implements ChartInterface { +abstract class ChartPainter>?> + extends CustomPainter implements ChartInterface { /// object that holds all data that was originally set for the chart, before /// it was modified or any filtering algorithms had been applied final T _data; /// object responsible for animations - final Animator _animator; + final Animator? _animator; /// object that manages the bounds and drawing constraints of the chart - final ViewPortHandler _viewPortHandler; + final ViewPortHandler? _viewPortHandler; /// The maximum distance in dp away from an entry causing it to highlight. - final double _maxHighlightDistance; + final double? _maxHighlightDistance; /// Flag that indicates if highlighting per tap (touch) is enabled final bool _highLightPerTapEnabled; @@ -47,45 +46,45 @@ abstract class ChartPainter>> _extraLeftOffset; /// the view that represents the marker - final IMarker _marker; + final IMarker? _marker; /// the object responsible for representing the description text - final Description _description; + final Description? _description; /// if set to true, the marker view is drawn when a value is clicked final bool _drawMarkers; /// paint object used for drawing the description text in the bottom right /// corner of the chart - final TextPainter _descPaint; + final TextPainter? _descPaint; /// paint object for drawing the information text when there are no values in /// the chart - final TextPainter _infoPaint; + final TextPainter? _infoPaint; - final Color _infoBackgroundColor; + final Color? _infoBackgroundColor; /// the object representing the labels on the x-axis - final XAxis _xAxis; + final XAxis? _xAxis; /// the legend object containing all data associated with the legend - final Legend _legend; - final LegendRenderer _legendRenderer; + final Legend? _legend; + final LegendRenderer? _legendRenderer; - final OnChartValueSelectedListener _selectionListener; + final OnChartValueSelectedListener? _selectionListener; - final DataRendererSettingFunction _rendererSettingFunction; + final DataRendererSettingFunction? _rendererSettingFunction; /////////////////////////////////////////////////// /// object responsible for rendering the data - DataRenderer renderer; - IHighlighter highlighter; + DataRenderer? renderer; + IHighlighter? highlighter; /// array of Highlight objects that reference the highlighted slices in the /// chart - List _indicesToHighlight; + List? _indicesToHighlight; - Size _size; + Size? _size; /// flag that indicates if offsets calculation has already been done or not bool _offsetsCalculated = false; @@ -95,13 +94,13 @@ abstract class ChartPainter>> bool _isInit = false; - XAxis get xAxis => _xAxis; + XAxis? get xAxis => _xAxis; - Legend get legend => _legend; + Legend? get legend => _legend; - ViewPortHandler get viewPortHandler => _viewPortHandler; + ViewPortHandler? get viewPortHandler => _viewPortHandler; - LegendRenderer get legendRenderer => _legendRenderer; + LegendRenderer? get legendRenderer => _legendRenderer; double get extraLeftOffset => _extraLeftOffset; @@ -111,38 +110,39 @@ abstract class ChartPainter>> double get extraBottomOffset => _extraBottomOffset; - IMarker get marker => _marker; + IMarker? get marker => _marker; bool get isDrawMarkers => _drawMarkers; - Animator get animator => _animator; + Animator? get animator => _animator; - Size get size => _size; + Size? get size => _size; - List get indicesToHighlight => _indicesToHighlight; + List? get indicesToHighlight => _indicesToHighlight; bool get highLightPerTapEnabled => _highLightPerTapEnabled; - ChartPainter(T data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + ChartPainter( + T data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener) + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener) : _data = data, _viewPortHandler = viewPortHandler, _animator = animator, @@ -165,7 +165,7 @@ abstract class ChartPainter>> _selectionListener = selectedListener, super() { initDefaultNormal(); - if (data == null || data.dataSets == null || data.dataSets.length == 0) { + if (data == null || data.dataSets == null || data.dataSets!.length == 0) { return; } initDefaultWithData(); @@ -178,9 +178,9 @@ abstract class ChartPainter>> void initDefaultWithData() { // calculate how many digits are needed - _setupDefaultFormatter(_data.getYMin1(), _data.getYMax1()); + _setupDefaultFormatter(_data!.getYMin1(), _data.getYMax1()); - for (IDataSet set in _data.dataSets) { + for (IDataSet set in _data.dataSets!) { if (set.needsFormatter() || set.getValueFormatter() == _defaultValueFormatter) set.setValueFormatter(_defaultValueFormatter); @@ -201,13 +201,13 @@ abstract class ChartPainter>> /// Calculates the required number of digits for the values that might be /// drawn in the chart (if enabled), and creates the default-value-formatter - void _setupDefaultFormatter(double min1, double max1) { + void _setupDefaultFormatter(double? min1, double? max1) { double reference = 0; if (_data == null || _data.getEntryCount() < 2) { - reference = max(min1.abs(), max1.abs()); + reference = max(min1!.abs(), max1!.abs()); } else { - reference = (max1 - min1).abs(); + reference = (max1! - min1!).abs(); } int digits = Utils.getDecimals(reference); @@ -217,11 +217,11 @@ abstract class ChartPainter>> } double getMeasuredHeight() { - return _size == null ? 0.0 : _size.height; + return _size == null ? 0.0 : _size!.height; } double getMeasuredWidth() { - return _size == null ? 0.0 : _size.width; + return _size == null ? 0.0 : _size!.width; } @override @@ -230,12 +230,11 @@ abstract class ChartPainter>> if (!_isInit) { canvas.drawRect(Rect.fromLTRB(0, 0, size.width, size.height), - Paint() - ..color = _infoBackgroundColor); + Paint()..color = _infoBackgroundColor!); MPPointF c = getCenter(size); - _infoPaint.layout(); + _infoPaint!.layout(); _infoPaint.paint(canvas, - Offset(c.x - _infoPaint.width / 2, c.y - _infoPaint.height / 2)); + Offset(c.x! - _infoPaint.width / 2, c.y! - _infoPaint.height / 2)); return; } @@ -255,20 +254,22 @@ abstract class ChartPainter>> void drawDescription(Canvas c, Size size) { // check if description should be drawn if (_description != null && _description.enabled) { - MPPointF position = _description.position; - double x, y; + MPPointF? position = _description.position; + double? x, y; // if no position specified, draw on default position if (position == null) { - x = size.width - _viewPortHandler.offsetRight() - _description.xOffset; + x = size.width - + _viewPortHandler!.offsetRight() - + _description.xOffset!; y = size.height - _viewPortHandler.offsetBottom() - - _description.yOffset; + _description.yOffset!; } else { x = position.x; y = position.y; } - _descPaint.layout(); - _descPaint.paint(c, Offset(x, y)); + _descPaint!.layout(); + _descPaint.paint(c, Offset(x!, y!)); } } @@ -278,9 +279,7 @@ abstract class ChartPainter>> /// /// @return bool valuesToHighlight() { - var res = _indicesToHighlight == null || - _indicesToHighlight.length <= 0 || - _indicesToHighlight[0] == null + var res = _indicesToHighlight == null || _indicesToHighlight!.isEmpty ? false : true; return res; @@ -331,9 +330,9 @@ abstract class ChartPainter>> /// @param y The y-value to highlight. Supply `NaN` for "any" /// @param dataSetIndex The dataset index to search in /// @param callListener Should the listener be called for this change - void highlightValue4(double x, double y, int dataSetIndex, - bool callListener) { - if (dataSetIndex < 0 || dataSetIndex >= _data.getDataSetCount()) { + void highlightValue4( + double x, double y, int dataSetIndex, bool callListener) { + if (dataSetIndex < 0 || dataSetIndex >= _data!.getDataSetCount()) { highlightValue6(null, callListener); } else { highlightValue6( @@ -355,35 +354,34 @@ abstract class ChartPainter>> /// /// @param high - the highlight object /// @param callListener - call the listener - void highlightValue6(Highlight high, bool callListener) { - Entry e; + void highlightValue6(Highlight? high, bool callListener) { + Entry? e; if (high == null) { _indicesToHighlight = null; } else { - e = _data.getEntryForHighlight(high); + e = _data!.getEntryForHighlight(high); if (e == null) { _indicesToHighlight = null; high = null; } else { // set the indices to highlight - _indicesToHighlight = List() - ..add(high); + _indicesToHighlight = [high]; } } if (callListener && _selectionListener != null) { if (!valuesToHighlight()) - _selectionListener?.onNothingSelected(); + _selectionListener.onNothingSelected(); else { // notify the listener - _selectionListener?.onValueSelected(e, high); + _selectionListener.onValueSelected(e, high); } } } - void selectedValue(Highlight high) { - Entry e = _data.getEntryForHighlight(high); + void selectedValue(Highlight? high) { + Entry? e = _data!.getEntryForHighlight(high); _selectionListener?.onValueSelected(e, null); } @@ -394,11 +392,11 @@ abstract class ChartPainter>> /// @param x /// @param y /// @return - Highlight getHighlightByTouchPoint(double x, double y) { + Highlight? getHighlightByTouchPoint(double x, double y) { if (_data == null || highlighter == null) { return null; } else { - return highlighter.getHighlight(x, y); + return highlighter!.getHighlight(x, y); } } @@ -406,21 +404,21 @@ abstract class ChartPainter>> void drawMarkers(Canvas canvas) { if (_marker == null || !_drawMarkers || !valuesToHighlight()) return; - for (int i = 0; i < _indicesToHighlight.length; i++) { - Highlight highlight = _indicesToHighlight[i]; + for (int i = 0; i < _indicesToHighlight!.length; i++) { + Highlight highlight = _indicesToHighlight![i]; - IDataSet set = _data.getDataSetByIndex(highlight.dataSetIndex); + IDataSet set = _data!.getDataSetByIndex(highlight.dataSetIndex)!; - Entry e = _data.getEntryForHighlight(_indicesToHighlight[i]); + Entry? e = _data.getEntryForHighlight(_indicesToHighlight![i]); int entryIndex = set.getEntryIndex2(e); // make sure entry not null - if (e == null || entryIndex > set.getEntryCount() * _animator.getPhaseX()) - continue; + if (e == null || + entryIndex > set.getEntryCount() * _animator!.getPhaseX()) continue; - List pos = getMarkerPosition(highlight); + List pos = getMarkerPosition(highlight); // check bounds - if (!_viewPortHandler.isInBounds(pos[0], pos[1])) continue; + if (!_viewPortHandler!.isInBounds(pos[0], pos[1])) continue; // callbacks to update the content _marker.refreshContent(e, highlight); @@ -435,13 +433,12 @@ abstract class ChartPainter>> /// /// @param high /// @return - List getMarkerPosition(Highlight high) { - return List() - ..add(high.drawX)..add(high.drawY); + List getMarkerPosition(Highlight high) { + return [high.drawX, high.drawY]; } @override - ChartData> getData() { + ChartData>? getData() { return _data; } @@ -451,7 +448,7 @@ abstract class ChartPainter>> } @override - double getMaxHighlightDistance() { + double? getMaxHighlightDistance() { return _maxHighlightDistance; } @@ -470,7 +467,7 @@ abstract class ChartPainter>> /// @return @override MPPointF getCenterOffsets() { - return _viewPortHandler.getContentCenter(); + return _viewPortHandler!.getContentCenter(); } @override diff --git a/mp_chart/lib/mp/painter/pie_chart_painter.dart b/mp_chart/lib/mp/painter/pie_chart_painter.dart index 6966585c..4ff832eb 100644 --- a/mp_chart/lib/mp/painter/pie_chart_painter.dart +++ b/mp_chart/lib/mp/painter/pie_chart_painter.dart @@ -1,5 +1,4 @@ import 'dart:math'; -import 'dart:ui'; import 'package:flutter/painting.dart'; import 'package:flutter/rendering.dart'; @@ -22,7 +21,7 @@ import 'package:mp_chart/mp/core/utils/utils.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/pie_redar_chart_painter.dart'; -class PieChartPainter extends PieRadarChartPainter { +class PieChartPainter extends PieRadarChartPainter { /// flag indicating if entry labels should be drawn or not final bool _drawEntryLabels; // = true @@ -66,51 +65,54 @@ class PieChartPainter extends PieRadarChartPainter { Rect _circleBox = Rect.zero; /// array that holds the width of each pie-slice in degrees - List _drawAngles = List(1); + List _drawAngles = []..length = 1; /// array that holds the absolute angle in degrees of each slice - List _absoluteAngles = List(1); + List _absoluteAngles = []..length = 1; /// Hole color Color _holeColor; MPPointF _centerTextOffset; - TypeFace _centerTextTypeface; - TypeFace get centerTextTypeface => _centerTextTypeface; + TypeFace? _centerTextTypeface; + + TypeFace? get centerTextTypeface => _centerTextTypeface; /// Center text color - final Color _centerTextColor; - Color get centerTextColor => _centerTextColor; + final Color? _centerTextColor; + + Color? get centerTextColor => _centerTextColor; /// Center text font size - final double _centerTextSize; - double get centerTextSize => _centerTextSize; - TypeFace _entryLabelTypeface; + final double? _centerTextSize; + + double? get centerTextSize => _centerTextSize; + TypeFace? _entryLabelTypeface; PieChartPainter( - PieData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + PieData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, double rotationAngle, - double rawRotationAngle, + double? rawRotationAngle, bool rotateEnabled, double minOffset, bool drawEntryLabels, @@ -121,18 +123,18 @@ class PieChartPainter extends PieRadarChartPainter { String centerText, double centerTextOffsetX, double centerTextOffsetY, - TypeFace entryLabelTypeface, - TypeFace centerTextTypeface, + TypeFace? entryLabelTypeface, + TypeFace? centerTextTypeface, double holeRadiusPercent, double transparentCircleRadiusPercent, bool drawCenterText, double centerTextRadiusPercent, double maxAngle, double minAngleForSlices, - Color backgroundColor, + Color? backgroundColor, Color holeColor, - Color centerTextColor, - double centerTextSize) + Color? centerTextColor, + double? centerTextSize) : _drawEntryLabels = drawEntryLabels, _drawHole = drawHole, _drawSlicesUnderHole = drawSlicesUnderHole, @@ -191,17 +193,17 @@ class PieChartPainter extends PieRadarChartPainter { @override void onPaint(Canvas canvas, Size size) { super.onPaint(canvas, size); - renderer.drawData(canvas); + renderer!.drawData(canvas); if (valuesToHighlight()) { - renderer.drawHighlighted(canvas, indicesToHighlight); + renderer!.drawHighlighted(canvas, indicesToHighlight); } - renderer.drawExtras(canvas); + renderer!.drawExtras(canvas); - renderer.drawValues(canvas); + renderer!.drawValues(canvas); - legendRenderer.renderLegend(canvas); + legendRenderer!.renderLegend(canvas); drawDescription(canvas, size); @@ -219,12 +221,12 @@ class PieChartPainter extends PieRadarChartPainter { MPPointF c = getCenterOffsets(); - double shift = (getData() as PieData).getDataSet().getSelectionShift(); + double shift = (getData() as PieData).getDataSet().getSelectionShift()!; // create the circle box that will contain the pie-chart (the bounds of // the pie-chart) - _circleBox = Rect.fromLTRB(c.x - radius + shift, c.y - radius + shift, - c.x + radius - shift, c.y + radius - shift); + _circleBox = Rect.fromLTRB(c.x! - radius + shift, c.y! - radius + shift, + c.x! + radius - shift, c.y! + radius - shift); MPPointF.recycleInstance(c); } @@ -249,42 +251,42 @@ class PieChartPainter extends PieRadarChartPainter { double rotationAngle = getRotationAngle(); - int entryIndex = highlight.x.toInt(); + int entryIndex = highlight.x!.toInt(); // offset needed to center the drawn text in the slice - double offset = _drawAngles[entryIndex] / 2; + double offset = _drawAngles[entryIndex]! / 2; // calculate the text position double x = (r * - cos(((rotationAngle + _absoluteAngles[entryIndex] - offset) * - animator.getPhaseY()) / + cos(((rotationAngle + _absoluteAngles[entryIndex]! - offset) * + animator!.getPhaseY()) / 180 * pi) + - center.x); + center.x!); double y = (r * - sin((rotationAngle + _absoluteAngles[entryIndex] - offset) * - animator.getPhaseY() / + sin((rotationAngle + _absoluteAngles[entryIndex]! - offset) * + animator!.getPhaseY() / 180 * pi) + - center.y); + center.y!); MPPointF.recycleInstance(center); - return List()..add(x)..add(y); + return [x, y]; } /// calculates the needed angles for the chart slices void calcAngles() { - int entryCount = getData().getEntryCount(); + int entryCount = getData()!.getEntryCount(); if (_drawAngles.length != entryCount) { - _drawAngles = List(entryCount); + _drawAngles = []..length = entryCount; } else { for (int i = 0; i < entryCount; i++) { _drawAngles[i] = 0; } } if (_absoluteAngles.length != entryCount) { - _absoluteAngles = List(entryCount); + _absoluteAngles = []..length = entryCount; } else { for (int i = 0; i < entryCount; i++) { _absoluteAngles[i] = 0; @@ -293,22 +295,22 @@ class PieChartPainter extends PieRadarChartPainter { double yValueSum = (getData() as PieData).getYValueSum(); - List dataSets = getData().dataSets; + List? dataSets = getData()!.dataSets as List?; bool hasMinAngle = _minAngleForSlices != 0 && entryCount * _minAngleForSlices <= _maxAngle; - List minAngles = List(entryCount); + List minAngles = []..length = entryCount; int cnt = 0; double offset = 0; double diff = 0; - for (int i = 0; i < getData().getDataSetCount(); i++) { - IPieDataSet set = dataSets[i]; + for (int i = 0; i < getData()!.getDataSetCount(); i++) { + IPieDataSet set = dataSets![i]; for (int j = 0; j < set.getEntryCount(); j++) { double drawAngle = - calcAngle2(set.getEntryForIndex(j).y.abs(), yValueSum); + calcAngle2(set.getEntryForIndex(j)!.y!.abs(), yValueSum); if (hasMinAngle) { double temp = drawAngle - _minAngleForSlices; @@ -326,7 +328,7 @@ class PieChartPainter extends PieRadarChartPainter { if (cnt == 0) { _absoluteAngles[cnt] = _drawAngles[cnt]; } else { - _absoluteAngles[cnt] = _absoluteAngles[cnt - 1] + _drawAngles[cnt]; + _absoluteAngles[cnt] = _absoluteAngles[cnt - 1]! + _drawAngles[cnt]!; } cnt++; @@ -337,11 +339,12 @@ class PieChartPainter extends PieRadarChartPainter { // Correct bigger slices by relatively reducing their angles based on the total angle needed to subtract // This requires that `entryCount * _minAngleForSlices <= _maxAngle` be true to properly work! for (int i = 0; i < entryCount; i++) { - minAngles[i] -= (minAngles[i] - _minAngleForSlices) / diff * offset; + minAngles[i] = minAngles[i]! - + ((minAngles[i]! - _minAngleForSlices) / diff * offset); if (i == 0) { _absoluteAngles[0] = minAngles[0]; } else { - _absoluteAngles[i] = _absoluteAngles[i - 1] + minAngles[i]; + _absoluteAngles[i] = _absoluteAngles[i - 1]! + minAngles[i]!; } } @@ -356,10 +359,10 @@ class PieChartPainter extends PieRadarChartPainter { bool needsHighlight(int index) { // no highlight if (!valuesToHighlight()) return false; - for (int i = 0; i < indicesToHighlight.length; i++) + for (int i = 0; i < indicesToHighlight!.length; i++) // check if the xvalue for the given dataset needs highlight - if (indicesToHighlight[i].x.toInt() == index) return true; + if (indicesToHighlight![i].x!.toInt() == index) return true; return false; } @@ -387,7 +390,7 @@ class PieChartPainter extends PieRadarChartPainter { double a = Utils.getNormalizedAngle(angle - getRotationAngle()); for (int i = 0; i < _absoluteAngles.length; i++) { - if (_absoluteAngles[i] > a) return i; + if (_absoluteAngles[i]! > a) return i; } return -1; // return -1 if no index found @@ -398,7 +401,7 @@ class PieChartPainter extends PieRadarChartPainter { /// @param xIndex /// @return int getDataSetIndexForIndex(int xIndex) { - List dataSets = getData().dataSets; + List dataSets = getData()!.dataSets as List; for (int i = 0; i < dataSets.length; i++) { if (dataSets[i].getEntryForXValue2(xIndex.toDouble(), double.nan) != null) @@ -413,7 +416,7 @@ class PieChartPainter extends PieRadarChartPainter { /// each slice takes /// /// @return - List getDrawAngles() { + List getDrawAngles() { return _drawAngles; } @@ -421,7 +424,7 @@ class PieChartPainter extends PieRadarChartPainter { /// slices end) /// /// @return - List getAbsoluteAngles() { + List getAbsoluteAngles() { return _absoluteAngles; } @@ -457,9 +460,8 @@ class PieChartPainter extends PieRadarChartPainter { @override double getRequiredLegendOffset() { - // ignore: null_aware_before_operator - var offset = legendRenderer.legendLabelPaint.text?.style?.fontSize * 2.0; - return offset == null ? Utils.convertDpToPixel(9) : offset; + var offset = legendRenderer?.legendLabelPaint?.text?.style?.fontSize; + return offset == null ? Utils.convertDpToPixel(9)! : offset * 2.0; } @override @@ -469,10 +471,7 @@ class PieChartPainter extends PieRadarChartPainter { @override double getRadius() { - if (_circleBox == null) - return 0; - else - return min(_circleBox.width / 2.0, _circleBox.height / 2.0); + return min(_circleBox.width / 2.0, _circleBox.height / 2.0); } /// returns the circlebox, the boundingbox of the pie-chart slices diff --git a/mp_chart/lib/mp/painter/pie_redar_chart_painter.dart b/mp_chart/lib/mp/painter/pie_redar_chart_painter.dart index bd8d46af..81baa33b 100644 --- a/mp_chart/lib/mp/painter/pie_redar_chart_painter.dart +++ b/mp_chart/lib/mp/painter/pie_redar_chart_painter.dart @@ -22,13 +22,13 @@ import 'package:mp_chart/mp/painter/painter.dart'; import 'radar_chart_painter.dart'; -abstract class PieRadarChartPainter>> +abstract class PieRadarChartPainter>?> extends ChartPainter { /// holds the normalized version of the current rotation angle of the chart double _rotationAngle; //270 /// holds the raw version of the current rotation angle of the chart - double _rawRotationAngle; //270 + double? _rawRotationAngle; //270 /// flag that indicates if rotation is enabled or not final bool _rotateEnabled; //true @@ -36,34 +36,34 @@ abstract class PieRadarChartPainter>> /// Sets the minimum offset (padding) around the chart, defaults to 0.f final double _minOffset; //0.0 - Color _backgroundColor; + Color? _backgroundColor; PieRadarChartPainter( T data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, double rotationAngle, - double rawRotationAngle, + double? rawRotationAngle, bool rotateEnabled, double minOffset, - Color backgroundColor) + Color? backgroundColor) : _rotationAngle = rotationAngle, _rawRotationAngle = rawRotationAngle, _rotateEnabled = rotateEnabled, @@ -98,53 +98,53 @@ abstract class PieRadarChartPainter>> @override int getMaxVisibleCount() { - return getData().getEntryCount(); + return getData()!.getEntryCount(); } @override void onPaint(Canvas canvas, Size size) { if (_backgroundColor != null) { - canvas.drawColor(_backgroundColor, BlendMode.src); + canvas.drawColor(_backgroundColor!, BlendMode.src); } } @override void calculateOffsets() { - if (legend != null) legendRenderer.computeLegend(getData()); + if (legend != null) legendRenderer!.computeLegend(getData()); renderer?.initBuffers(); calcMinMax(); double legendLeft = 0, legendRight = 0, legendBottom = 0, legendTop = 0; - if (legend != null && legend.enabled && !legend.drawInside) { - double fullLegendWidth = min(legend.neededWidth, - viewPortHandler.getChartWidth() * legend.maxSizePercent); + if (legend != null && legend!.enabled && !legend!.drawInside) { + double fullLegendWidth = min(legend!.neededWidth, + viewPortHandler!.getChartWidth() * legend!.maxSizePercent); - switch (legend.orientation) { + switch (legend!.orientation) { case LegendOrientation.VERTICAL: { double xLegendOffset = 0.0; - if (legend.horizontalAlignment == LegendHorizontalAlignment.LEFT || - legend.horizontalAlignment == LegendHorizontalAlignment.RIGHT) { - if (legend.verticalAlignment == LegendVerticalAlignment.CENTER) { + if (legend!.horizontalAlignment == LegendHorizontalAlignment.LEFT || + legend!.horizontalAlignment == LegendHorizontalAlignment.RIGHT) { + if (legend!.verticalAlignment == LegendVerticalAlignment.CENTER) { // this is the space between the legend and the chart - final double spacing = Utils.convertDpToPixel(13); + final double spacing = Utils.convertDpToPixel(13)!; xLegendOffset = fullLegendWidth + spacing; } else { // this is the space between the legend and the chart - double spacing = Utils.convertDpToPixel(8); + double spacing = Utils.convertDpToPixel(8)!; double legendWidth = fullLegendWidth + spacing; double legendHeight = - legend.neededHeight + legend.textHeightMax; + legend!.neededHeight + legend!.textHeightMax; - var center = getCenter(size); + var center = getCenter(size!); - double bottomX = legend.horizontalAlignment == + double bottomX = legend!.horizontalAlignment == LegendHorizontalAlignment.RIGHT - ? size.width - legendWidth + 15.0 + ? size!.width - legendWidth + 15.0 : legendWidth - 15.0; double bottomY = legendHeight + 15.0; double distLegend = distanceToCenter(bottomX, bottomY); @@ -153,15 +153,15 @@ abstract class PieRadarChartPainter>> center, getRadius(), getAngleForPoint(bottomX, bottomY)); double distReference = - distanceToCenter(reference.x, reference.y); - double minOffset = Utils.convertDpToPixel(5); + distanceToCenter(reference.x!, reference.y!); + double? minOffset = Utils.convertDpToPixel(5); - if (bottomY >= center.y && - size.height - legendWidth > size.width) { + if (bottomY >= center.y! && + size!.height - legendWidth > size!.width) { xLegendOffset = legendWidth; } else if (distLegend < distReference) { double diff = distReference - distLegend; - xLegendOffset = minOffset + diff; + xLegendOffset = minOffset! + diff; } else { xLegendOffset = legendWidth; } @@ -171,7 +171,7 @@ abstract class PieRadarChartPainter>> } } - switch (legend.horizontalAlignment) { + switch (legend!.horizontalAlignment) { case LegendHorizontalAlignment.LEFT: legendLeft = xLegendOffset; break; @@ -181,18 +181,18 @@ abstract class PieRadarChartPainter>> break; case LegendHorizontalAlignment.CENTER: - switch (legend.verticalAlignment) { + switch (legend!.verticalAlignment) { case LegendVerticalAlignment.TOP: legendTop = min( - legend.neededHeight, - viewPortHandler.getChartHeight() * - legend.maxSizePercent); + legend!.neededHeight, + viewPortHandler!.getChartHeight() * + legend!.maxSizePercent); break; case LegendVerticalAlignment.BOTTOM: legendBottom = min( - legend.neededHeight, - viewPortHandler.getChartHeight() * - legend.maxSizePercent); + legend!.neededHeight, + viewPortHandler!.getChartHeight() * + legend!.maxSizePercent); break; default: break; @@ -205,17 +205,17 @@ abstract class PieRadarChartPainter>> case LegendOrientation.HORIZONTAL: double yLegendOffset = 0.0; - if (legend.verticalAlignment == LegendVerticalAlignment.TOP || - legend.verticalAlignment == LegendVerticalAlignment.BOTTOM) { + if (legend!.verticalAlignment == LegendVerticalAlignment.TOP || + legend!.verticalAlignment == LegendVerticalAlignment.BOTTOM) { // It's possible that we do not need this offset anymore as it // is available through the extraOffsets, but changing it can mean // changing default visibility for existing apps. double yOffset = getRequiredLegendOffset(); - yLegendOffset = min(legend.neededHeight + yOffset, - viewPortHandler.getChartHeight() * legend.maxSizePercent); + yLegendOffset = min(legend!.neededHeight + yOffset, + viewPortHandler!.getChartHeight() * legend!.maxSizePercent); - switch (legend.verticalAlignment) { + switch (legend!.verticalAlignment) { case LegendVerticalAlignment.TOP: legendTop = yLegendOffset; break; @@ -229,19 +229,19 @@ abstract class PieRadarChartPainter>> break; } - legendLeft += getRequiredBaseOffset(); - legendRight += getRequiredBaseOffset(); - legendTop += getRequiredBaseOffset(); - legendBottom += getRequiredBaseOffset(); + legendLeft += getRequiredBaseOffset()!; + legendRight += getRequiredBaseOffset()!; + legendTop += getRequiredBaseOffset()!; + legendBottom += getRequiredBaseOffset()!; } - double minOffset = Utils.convertDpToPixel(_minOffset); + double? minOffset = Utils.convertDpToPixel(_minOffset); if (this is RadarChartPainter) { - XAxis x = this.xAxis; + XAxis x = this.xAxis!; if (x.enabled && x.drawLabels) { - minOffset = max(minOffset, x.labelRotatedWidth.toDouble()); + minOffset = max(minOffset!, x.labelRotatedWidth.toDouble()); } } @@ -250,13 +250,13 @@ abstract class PieRadarChartPainter>> legendBottom += extraBottomOffset; legendLeft += extraLeftOffset; - double offsetLeft = max(minOffset, legendLeft); + double offsetLeft = max(minOffset!, legendLeft); double offsetTop = max(minOffset, legendTop); double offsetRight = max(minOffset, legendRight); double offsetBottom = - max(minOffset, max(getRequiredBaseOffset(), legendBottom)); + max(minOffset, max(getRequiredBaseOffset()!, legendBottom)); - viewPortHandler.restrainViewPort( + viewPortHandler!.restrainViewPort( offsetLeft, offsetTop, offsetRight, offsetBottom); } @@ -270,13 +270,13 @@ abstract class PieRadarChartPainter>> double getAngleForPoint(double x, double y) { MPPointF c = getCenterOffsets(); - double tx = x - c.x, ty = y - c.y; + double tx = x - c.x!, ty = y - c.y!; double length = sqrt(tx * tx + ty * ty); double r = acos(ty / length); double angle = r * 180.0 / pi; - if (x > c.x) angle = 360 - angle; + if (x > c.x!) angle = 360 - angle; // add 90° because chart starts EAST angle = angle + 90; @@ -305,8 +305,8 @@ abstract class PieRadarChartPainter>> void getPosition2( MPPointF center, double dist, double angle, MPPointF outputPoint) { - outputPoint.x = (center.x + dist * cos(angle / 180.0 * pi)); - outputPoint.y = (center.y + dist * sin(angle / 180.0 * pi)); + outputPoint.x = (center.x! + dist * cos(angle / 180.0 * pi)); + outputPoint.y = (center.y! + dist * sin(angle / 180.0 * pi)); } /// Returns the distance of a certain point on the chart to the center of the @@ -323,16 +323,16 @@ abstract class PieRadarChartPainter>> double xDist = 0; double yDist = 0; - if (x > c.x) { - xDist = x - c.x; + if (x > c.x!) { + xDist = x - c.x!; } else { - xDist = c.x - x; + xDist = c.x! - x; } - if (y > c.y) { - yDist = y - c.y; + if (y > c.y!) { + yDist = y - c.y!; } else { - yDist = c.y - y; + yDist = c.y! - y; } // pythagoras @@ -365,7 +365,7 @@ abstract class PieRadarChartPainter>> /// gestures and animations. /// /// @return - double getRawRotationAngle() { + double? getRawRotationAngle() { return _rawRotationAngle; } @@ -394,10 +394,10 @@ abstract class PieRadarChartPainter>> /// @return double getDiameter() { Rect content = Rect.fromLTRB( - viewPortHandler.getContentRect().left + extraLeftOffset, - viewPortHandler.getContentRect().top + extraTopOffset, - viewPortHandler.getContentRect().right - extraRightOffset, - viewPortHandler.getContentRect().bottom - extraBottomOffset); + viewPortHandler!.getContentRect().left + extraLeftOffset, + viewPortHandler!.getContentRect().top + extraTopOffset, + viewPortHandler!.getContentRect().right - extraRightOffset, + viewPortHandler!.getContentRect().bottom - extraBottomOffset); return min(content.width, content.height); } @@ -415,20 +415,20 @@ abstract class PieRadarChartPainter>> /// legend size. /// /// @return - double getRequiredBaseOffset(); + double? getRequiredBaseOffset(); @override - double getYChartMax() { + double? getYChartMax() { return 0; } @override - double getYChartMin() { + double? getYChartMin() { return 0; } void setRotationAngle(double angle) { _rawRotationAngle = angle; - _rotationAngle = Utils.getNormalizedAngle(_rawRotationAngle); + _rotationAngle = Utils.getNormalizedAngle(_rawRotationAngle!); } } diff --git a/mp_chart/lib/mp/painter/radar_chart_painter.dart b/mp_chart/lib/mp/painter/radar_chart_painter.dart index f1400bae..5e441c2f 100644 --- a/mp_chart/lib/mp/painter/radar_chart_painter.dart +++ b/mp_chart/lib/mp/painter/radar_chart_painter.dart @@ -20,7 +20,7 @@ import 'package:mp_chart/mp/core/utils/utils.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/pie_redar_chart_painter.dart'; -class RadarChartPainter extends PieRadarChartPainter { +class RadarChartPainter extends PieRadarChartPainter { /// width of the main web lines final double _webLineWidth; @@ -28,10 +28,10 @@ class RadarChartPainter extends PieRadarChartPainter { final double _innerWebLineWidth; /// color for the main web lines - final Color _webColor; // = Color.fromARGB(255, 122, 122, 122) + final Color? _webColor; // = Color.fromARGB(255, 122, 122, 122) /// color for the inner web - final Color _webColorInner; // = Color.fromARGB(255, 122, 122, 122) + final Color? _webColorInner; // = Color.fromARGB(255, 122, 122, 122) /// transparency the grid is drawn with (0-255) final int _webAlpha; @@ -43,15 +43,15 @@ class RadarChartPainter extends PieRadarChartPainter { final int _skipWebLineCount; /// the object reprsenting the y-axis labels - final YAxis _yAxis; + final YAxis? _yAxis; //////////// - YAxisRendererRadarChart _yAxisRenderer; - XAxisRendererRadarChart _xAxisRenderer; + late YAxisRendererRadarChart _yAxisRenderer; + late XAxisRendererRadarChart _xAxisRenderer; - Color get webColor => _webColor; + Color? get webColor => _webColor; - Color get webColorInner => _webColorInner; + Color? get webColorInner => _webColorInner; double get webLineWidth => _webLineWidth; @@ -61,42 +61,42 @@ class RadarChartPainter extends PieRadarChartPainter { int get skipWebLineCount => _skipWebLineCount; - YAxis get yAxis => _yAxis; + YAxis? get yAxis => _yAxis; RadarChartPainter( - RadarData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + RadarData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, double rotationAngle, - double rawRotationAngle, + double? rawRotationAngle, bool rotateEnabled, double minOffset, double webLineWidth, double innerWebLineWidth, - Color webColor, - Color webColorInner, + Color? webColor, + Color? webColorInner, int webAlpha, bool drawWeb, int skipWebLineCount, - YAxis yAxis, - Color backgroundColor) + YAxis? yAxis, + Color? backgroundColor) : _webLineWidth = webLineWidth, _innerWebLineWidth = innerWebLineWidth, _webColor = webColor, @@ -145,10 +145,10 @@ class RadarChartPainter extends PieRadarChartPainter { @override void calcMinMax() { super.calcMinMax(); - _yAxis.calculate(getData().getYMin2(AxisDependency.LEFT), - getData().getYMax2(AxisDependency.LEFT)); - xAxis.calculate( - 0, getData().getMaxEntryCountSet().getEntryCount().toDouble()); + _yAxis!.calculate(getData()!.getYMin2(AxisDependency.LEFT), + getData()!.getYMax2(AxisDependency.LEFT)); + xAxis!.calculate( + 0, getData()!.getMaxEntryCountSet()!.getEntryCount().toDouble()); } @override @@ -156,38 +156,38 @@ class RadarChartPainter extends PieRadarChartPainter { super.calculateOffsets(); calcMinMax(); _yAxisRenderer.computeAxis( - _yAxis.axisMinimum, _yAxis.axisMaximum, _yAxis.inverted); - _xAxisRenderer.computeAxis(xAxis.axisMinimum, xAxis.axisMaximum, false); - if (legend != null && !legend.isLegendCustom) - legendRenderer.computeLegend(getData()); + _yAxis!.axisMinimum, _yAxis.axisMaximum, _yAxis.inverted); + _xAxisRenderer.computeAxis(xAxis!.axisMinimum, xAxis!.axisMaximum, false); + if (legend != null && !legend!.isLegendCustom) + legendRenderer!.computeLegend(getData()); } @override void onPaint(Canvas canvas, Size size) { super.onPaint(canvas, size); - if (xAxis.enabled) - _xAxisRenderer.computeAxis(xAxis.axisMinimum, xAxis.axisMaximum, false); + if (xAxis!.enabled) + _xAxisRenderer.computeAxis(xAxis!.axisMinimum, xAxis!.axisMaximum, false); _xAxisRenderer.renderAxisLabels(canvas); - if (_drawWeb) renderer.drawExtras(canvas); + if (_drawWeb) renderer!.drawExtras(canvas); - if (_yAxis.enabled && _yAxis.drawLimitLineBehindData) + if (_yAxis!.enabled && _yAxis.drawLimitLineBehindData) _yAxisRenderer.renderLimitLines(canvas); - renderer.drawData(canvas); + renderer!.drawData(canvas); if (valuesToHighlight()) - renderer.drawHighlighted(canvas, indicesToHighlight); + renderer!.drawHighlighted(canvas, indicesToHighlight); if (_yAxis.enabled && !_yAxis.drawLimitLineBehindData) _yAxisRenderer.renderLimitLines(canvas); _yAxisRenderer.renderAxisLabels(canvas); - renderer.drawValues(canvas); + renderer!.drawValues(canvas); - legendRenderer.renderLegend(canvas); + legendRenderer!.renderLegend(canvas); drawDescription(canvas, size); @@ -198,15 +198,15 @@ class RadarChartPainter extends PieRadarChartPainter { /// /// @return double getFactor() { - Rect content = viewPortHandler.getContentRect(); - return min(content.width / 2, content.height / 2) / _yAxis.axisRange; + Rect content = viewPortHandler!.getContentRect(); + return min(content.width / 2, content.height / 2) / _yAxis!.axisRange; } /// Returns the angle that each slice in the radar chart occupies. /// /// @return double getSliceAngle() { - return 360 / getData().getMaxEntryCountSet().getEntryCount(); + return 360 / getData()!.getMaxEntryCountSet()!.getEntryCount(); } @override @@ -216,7 +216,7 @@ class RadarChartPainter extends PieRadarChartPainter { double sliceangle = getSliceAngle(); - int max = getData().getMaxEntryCountSet().getEntryCount(); + int max = getData()!.getMaxEntryCountSet()!.getEntryCount(); int index = 0; @@ -234,30 +234,30 @@ class RadarChartPainter extends PieRadarChartPainter { @override double getRequiredLegendOffset() { - var size = legendRenderer.legendLabelPaint.text.style.fontSize; - return (size == null ? Utils.convertDpToPixel(9) : size) * 4.0; + var size = legendRenderer!.legendLabelPaint!.text!.style!.fontSize; + return (size == null ? Utils.convertDpToPixel(9) : size)! * 4.0; } @override - double getRequiredBaseOffset() { - return xAxis.enabled && xAxis.drawLabels - ? xAxis.labelRotatedWidth.toDouble() + double? getRequiredBaseOffset() { + return xAxis!.enabled && xAxis!.drawLabels + ? xAxis!.labelRotatedWidth.toDouble() : Utils.convertDpToPixel(10); } @override double getRadius() { - Rect content = viewPortHandler.getContentRect(); + Rect content = viewPortHandler!.getContentRect(); return min(content.width / 2, content.height / 2); } /// Returns the maximum value this chart can display on it's y-axis. - double getYChartMax() { - return _yAxis.axisMaximum; + double? getYChartMax() { + return _yAxis!.axisMaximum; } /// Returns the minimum value this chart can display on it's y-axis. - double getYChartMin() { - return _yAxis.axisMinimum; + double? getYChartMin() { + return _yAxis!.axisMinimum; } } diff --git a/mp_chart/lib/mp/painter/scatter_chart_painter.dart b/mp_chart/lib/mp/painter/scatter_chart_painter.dart index a5350678..553d35b2 100644 --- a/mp_chart/lib/mp/painter/scatter_chart_painter.dart +++ b/mp_chart/lib/mp/painter/scatter_chart_painter.dart @@ -18,29 +18,29 @@ import 'package:mp_chart/mp/core/transformer/transformer.dart'; import 'package:mp_chart/mp/core/view_port.dart'; import 'package:mp_chart/mp/painter/bar_line_chart_painter.dart'; -class ScatterChartPainter extends BarLineChartBasePainter +class ScatterChartPainter extends BarLineChartBasePainter implements ScatterDataProvider { ScatterChartPainter( - ScatterData data, - Animator animator, - ViewPortHandler viewPortHandler, - double maxHighlightDistance, + ScatterData? data, + Animator? animator, + ViewPortHandler? viewPortHandler, + double? maxHighlightDistance, bool highLightPerTapEnabled, double extraLeftOffset, double extraTopOffset, double extraRightOffset, double extraBottomOffset, - IMarker marker, - Description desc, + IMarker? marker, + Description? desc, bool drawMarkers, - Color infoBgColor, - TextPainter infoPainter, - TextPainter descPainter, - XAxis xAxis, - Legend legend, - LegendRenderer legendRenderer, - DataRendererSettingFunction rendererSettingFunction, - OnChartValueSelectedListener selectedListener, + Color? infoBgColor, + TextPainter? infoPainter, + TextPainter? descPainter, + XAxis? xAxis, + Legend? legend, + LegendRenderer? legendRenderer, + DataRendererSettingFunction? rendererSettingFunction, + OnChartValueSelectedListener? selectedListener, int maxVisibleCount, bool autoScaleMinMaxEnabled, bool pinchZoomEnabled, @@ -50,25 +50,25 @@ class ScatterChartPainter extends BarLineChartBasePainter bool dragYEnabled, bool scaleXEnabled, bool scaleYEnabled, - Paint gridBackgroundPaint, - Paint backgroundPaint, - Paint borderPaint, + Paint? gridBackgroundPaint, + Paint? backgroundPaint, + Paint? borderPaint, bool drawGridBackground, bool drawBorders, bool clipValuesToContent, double minOffset, bool keepPositionOnRotation, - OnDrawListener drawListener, - YAxis axisLeft, - YAxis axisRight, - YAxisRenderer axisRendererLeft, - YAxisRenderer axisRendererRight, - Transformer leftAxisTransformer, - Transformer rightAxisTransformer, - XAxisRenderer xAxisRenderer, - Matrix4 zoomMatrixBuffer, + OnDrawListener? drawListener, + YAxis? axisLeft, + YAxis? axisRight, + YAxisRenderer? axisRendererLeft, + YAxisRenderer? axisRendererRight, + Transformer? leftAxisTransformer, + Transformer? rightAxisTransformer, + XAxisRenderer? xAxisRenderer, + Matrix4? zoomMatrixBuffer, bool customViewPortEnabled, - ChartTransListener chartTransListener) + ChartTransListener? chartTransListener) : super( data, animator, @@ -123,12 +123,12 @@ class ScatterChartPainter extends BarLineChartBasePainter void initDefaultWithData() { super.initDefaultWithData(); renderer = ScatterChartRenderer(this, animator, viewPortHandler); - xAxis.spaceMin = (0.5); - xAxis.spaceMax = (0.5); + xAxis!.spaceMin = (0.5); + xAxis!.spaceMax = (0.5); } @override - ScatterData getScatterData() { - return getData(); + ScatterData? getScatterData() { + return getData() as ScatterData?; } } diff --git a/mp_chart/lib/mp_chart.dart b/mp_chart/lib/mp_chart.dart index 015199da..d7b902be 100644 --- a/mp_chart/lib/mp_chart.dart +++ b/mp_chart/lib/mp_chart.dart @@ -1,5 +1,44 @@ library mp_chart; +export '/mp/core/animator.dart'; +export '/mp/core/enums/mode.dart'; +export '/mp/chart/pie_chart.dart'; +export '/mp/chart/line_chart.dart'; +export '/mp/core/axis/x_axis.dart'; +export '/mp/core/axis/y_axis.dart'; +export '/mp/core/utils/utils.dart'; +export '/mp/core/description.dart'; +export '/mp/core/entry/entry.dart'; +export '/mp/core/data/pie_data.dart'; +export '/mp/core/legend/legend.dart'; +export '/mp/core/axis/axis_base.dart'; +export '/mp/core/data/line_data.dart'; +export '/mp/core/poolable/point.dart'; +export '/mp/core/marker/i_marker.dart'; +export '/mp/core/entry/pie_entry.dart'; +export '/mp/controller/controller.dart'; +export '/mp/core/common_interfaces.dart'; +export '/mp/core/enums/legend_form.dart'; +export '/mp/core/adapter_android_mp.dart'; +export '/mp/core/highlight/highlight.dart'; +export '/mp/core/utils/painter_utils.dart'; +export '/mp/core/render/data_renderer.dart'; +export '/mp/core/enums/value_position.dart'; +export '/mp/core/data_set/pie_data_set.dart'; +export '/mp/core/enums/x_axis_position.dart'; +export '/mp/core/data_set/line_data_set.dart'; +export '/mp/core/enums/legend_orientation.dart'; +export '/mp/core/render/pie_chart_renderer.dart'; +export '/mp/controller/pie_chart_controller.dart'; +export '/mp/core/enums/y_axis_label_position.dart'; +export '/mp/controller/line_chart_controller.dart'; +export '/mp/core/value_formatter/value_formatter.dart'; +export '/mp/core/enums/legend_vertical_alignment.dart'; +export '/mp/core/enums/legend_horizontal_alignment.dart'; +export '/mp/core/value_formatter/percent_formatter.dart'; +export '/mp/core/value_formatter/default_value_formatter.dart'; +export '/mp/controller/bar_line_scatter_candle_bubble_controller.dart'; + /// A Calculator. class Calculator { /// Returns [value] plus 1. diff --git a/mp_chart/pubspec.yaml b/mp_chart/pubspec.yaml index 2c0c7d89..338ff149 100644 --- a/mp_chart/pubspec.yaml +++ b/mp_chart/pubspec.yaml @@ -1,20 +1,24 @@ name: mp_chart description: A Flutter chart package just like AndroidMPChart, apply easy to use chart for Flutter. -version: 0.3.1 -author: SunPointed<410338643@qq.com> +version: 1.8.0 homepage: https://github.com/SunPointed/MPFlutterChart environment: - sdk: ">=2.1.0 <3.0.0" + sdk: '>=3.3.0 <4.0.0' + flutter: ">=3.22.0" dependencies: - intl: ^0.17.0 - path_provider: ^2.0.1 - screenshot: ^1.0.0-nullsafety.1 - path_drawing: ^0.5.0 - image_gallery_saver: ^1.6.9 - optimized_gesture_detector: ^0.0.6 - vector_math: ^2.1.0 + intl: ^0.20.2 + path_provider: ^2.1.5 + screenshot: ^3.0.0 + path_drawing: ^1.0.1 +# image_gallery_saver: ^1.7.1 + optimized_gesture_detector: + git: + url: https://github.com/absar/OptimizedGestureDetector.git + #ref: null-safety + path: ./ + vector_math: ^2.1.4 flutter: sdk: flutter @@ -22,6 +26,8 @@ dev_dependencies: flutter_test: sdk: flutter + + # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/mp_chart/test/mp_chart_test.dart b/mp_chart/test/mp_chart_test.dart index c2d701e0..13f25847 100644 --- a/mp_chart/test/mp_chart_test.dart +++ b/mp_chart/test/mp_chart_test.dart @@ -10,7 +10,7 @@ void main() { expect(calculator.addOne(2), 3); expect(calculator.addOne(-7), -6); expect(calculator.addOne(0), 1); - expect(() => calculator.addOne(null), throwsNoSuchMethodError); + expect(() => calculator.addOne(0), throwsNoSuchMethodError); }); /**