flet-charts 0.2.0.dev35__py3-none-any.whl → 0.2.0.dev84__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flet-charts might be problematic. Click here for more details.
- flet_charts/__init__.py +24 -17
- flet_charts/bar_chart.py +83 -23
- flet_charts/bar_chart_group.py +1 -1
- flet_charts/bar_chart_rod.py +36 -4
- flet_charts/chart_axis.py +29 -9
- flet_charts/line_chart.py +72 -7
- flet_charts/line_chart_data.py +30 -4
- flet_charts/line_chart_data_point.py +32 -2
- flet_charts/matplotlib_chart.py +2 -1
- flet_charts/pie_chart.py +3 -3
- flet_charts/pie_chart_section.py +5 -0
- flet_charts/scatter_chart.py +70 -23
- flet_charts/scatter_chart_spot.py +43 -4
- flet_charts/types.py +159 -16
- {flet_charts-0.2.0.dev35.dist-info → flet_charts-0.2.0.dev84.dist-info}/METADATA +8 -9
- flet_charts-0.2.0.dev84.dist-info/RECORD +38 -0
- flutter/flet_charts/lib/src/bar_chart.dart +2 -0
- flutter/flet_charts/lib/src/scatter_chart.dart +22 -21
- flutter/flet_charts/lib/src/utils/bar_chart.dart +26 -9
- flutter/flet_charts/lib/src/utils/charts.dart +12 -0
- flutter/flet_charts/lib/src/utils/line_chart.dart +15 -3
- flutter/flet_charts/lib/src/utils/pie_chart.dart +1 -0
- flutter/flet_charts/lib/src/utils/scatter_chart.dart +22 -21
- flutter/flet_charts/pubspec.lock +48 -32
- flet_charts-0.2.0.dev35.dist-info/RECORD +0 -38
- {flet_charts-0.2.0.dev35.dist-info → flet_charts-0.2.0.dev84.dist-info}/WHEEL +0 -0
- {flet_charts-0.2.0.dev35.dist-info → flet_charts-0.2.0.dev84.dist-info}/licenses/LICENSE +0 -0
- {flet_charts-0.2.0.dev35.dist-info → flet_charts-0.2.0.dev84.dist-info}/top_level.txt +0 -0
|
@@ -18,6 +18,8 @@ class ScatterChartControl extends StatefulWidget {
|
|
|
18
18
|
class _ScatterChartControlState extends State<ScatterChartControl> {
|
|
19
19
|
@override
|
|
20
20
|
Widget build(BuildContext context) {
|
|
21
|
+
debugPrint("ScatterChart build: ${widget.control.id}");
|
|
22
|
+
|
|
21
23
|
final theme = Theme.of(context);
|
|
22
24
|
var animation = widget.control.getAnimation(
|
|
23
25
|
"animation",
|
|
@@ -34,11 +36,12 @@ class _ScatterChartControlState extends State<ScatterChartControl> {
|
|
|
34
36
|
var interactive = widget.control.getBool("interactive", true)!;
|
|
35
37
|
|
|
36
38
|
// Build list of ScatterSpotData
|
|
37
|
-
final
|
|
39
|
+
final spotsAsControls = widget.control.children('spots');
|
|
40
|
+
final spots = spotsAsControls.map((spot) {
|
|
38
41
|
var x = spot.getDouble('x', 0)!;
|
|
39
42
|
var y = spot.getDouble('y', 0)!;
|
|
40
43
|
return ScatterSpot(x, y,
|
|
41
|
-
show: spot.
|
|
44
|
+
show: spot.visible,
|
|
42
45
|
renderPriority: spot.getInt('render_priority', 0)!,
|
|
43
46
|
xError: spot.get('x_error'),
|
|
44
47
|
yError: spot.get('y_error'),
|
|
@@ -80,30 +83,29 @@ class _ScatterChartControlState extends State<ScatterChartControl> {
|
|
|
80
83
|
widget.control.get("vertical_grid_lines"),
|
|
81
84
|
theme),
|
|
82
85
|
scatterTouchData: ScatterTouchData(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
parseScatterTouchTooltipData(context, widget.control, spots)),
|
|
86
|
+
enabled: interactive && !widget.control.disabled,
|
|
87
|
+
touchCallback: widget.control.getBool("on_event", false)!
|
|
88
|
+
? (evt, resp) {
|
|
89
|
+
var eventData = ScatterChartEventData.fromDetails(evt, resp);
|
|
90
|
+
widget.control.triggerEvent("event", eventData.toMap());
|
|
91
|
+
}
|
|
92
|
+
: null,
|
|
93
|
+
longPressDuration: widget.control.getDuration("long_press_duration"),
|
|
94
|
+
handleBuiltInTouches: !widget.control
|
|
95
|
+
.getBool("show_tooltips_for_selected_spots_only", false)!,
|
|
96
|
+
touchTooltipData:
|
|
97
|
+
parseScatterTouchTooltipData(context, widget.control, spots),
|
|
98
|
+
),
|
|
97
99
|
scatterLabelSettings: ScatterLabelSettings(
|
|
98
100
|
showLabel: true,
|
|
99
101
|
getLabelFunction: (spotIndex, spot) {
|
|
100
|
-
var dp =
|
|
102
|
+
var dp = spotsAsControls[spotIndex];
|
|
101
103
|
return dp.getString("label_text", "")!;
|
|
102
104
|
},
|
|
103
105
|
getLabelTextStyleFunction: (spotIndex, spot) {
|
|
104
|
-
var dp =
|
|
106
|
+
var dp = spotsAsControls[spotIndex];
|
|
105
107
|
var labelStyle =
|
|
106
|
-
dp.getTextStyle("
|
|
108
|
+
dp.getTextStyle("label_text_style", theme, const TextStyle())!;
|
|
107
109
|
if (labelStyle.color == null) {
|
|
108
110
|
labelStyle =
|
|
109
111
|
labelStyle.copyWith(color: spot.dotPainter.mainColor);
|
|
@@ -111,8 +113,7 @@ class _ScatterChartControlState extends State<ScatterChartControl> {
|
|
|
111
113
|
return labelStyle;
|
|
112
114
|
},
|
|
113
115
|
),
|
|
114
|
-
showingTooltipIndicators:
|
|
115
|
-
.children('spots')
|
|
116
|
+
showingTooltipIndicators: spotsAsControls
|
|
116
117
|
.asMap()
|
|
117
118
|
.entries
|
|
118
119
|
.where((e) => e.value.getBool("selected", false)!)
|
|
@@ -64,15 +64,20 @@ BarTouchTooltipData? parseBarTouchTooltipData(
|
|
|
64
64
|
getTooltipColor: (BarChartGroupData group) =>
|
|
65
65
|
parseColor(tooltip["bgcolor"], theme, theme.colorScheme.secondary)!,
|
|
66
66
|
tooltipBorderRadius: parseBorderRadius(tooltip["border_radius"]),
|
|
67
|
-
tooltipMargin: parseDouble(tooltip["margin"])
|
|
68
|
-
tooltipPadding: parsePadding(tooltip["padding"]
|
|
67
|
+
tooltipMargin: parseDouble(tooltip["margin"], 16)!,
|
|
68
|
+
tooltipPadding: parsePadding(tooltip["padding"],
|
|
69
|
+
const EdgeInsets.symmetric(horizontal: 16, vertical: 8))!,
|
|
69
70
|
maxContentWidth: parseDouble(tooltip["max_width"]),
|
|
70
|
-
rotateAngle: parseDouble(tooltip["
|
|
71
|
-
tooltipHorizontalOffset: parseDouble(tooltip["horizontal_offset"])
|
|
71
|
+
rotateAngle: parseDouble(tooltip["rotation"], 0.0)!,
|
|
72
|
+
tooltipHorizontalOffset: parseDouble(tooltip["horizontal_offset"], 0)!,
|
|
72
73
|
tooltipBorder: parseBorderSide(tooltip["border_side"], theme),
|
|
73
|
-
fitInsideHorizontally:
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
fitInsideHorizontally:
|
|
75
|
+
parseBool(tooltip["fit_inside_horizontally"], false)!,
|
|
76
|
+
fitInsideVertically: parseBool(tooltip["fit_inside_vertically"], false)!,
|
|
77
|
+
direction:
|
|
78
|
+
parseTooltipDirection(tooltip["direction"], TooltipDirection.auto)!,
|
|
79
|
+
tooltipHorizontalAlignment: parseFLHorizontalAlignment(
|
|
80
|
+
tooltip["horizontal_alignment"], FLHorizontalAlignment.center)!,
|
|
76
81
|
getTooltipItem: (group, groupIndex, rod, rodIndex) {
|
|
77
82
|
var rod =
|
|
78
83
|
control.children("groups")[groupIndex].children("rods")[rodIndex];
|
|
@@ -84,9 +89,10 @@ BarTouchTooltipData? parseBarTouchTooltipData(
|
|
|
84
89
|
BarTooltipItem? parseBarTooltipItem(Control rod, BuildContext context) {
|
|
85
90
|
if (!rod.getBool("show_tooltip", true)!) return null;
|
|
86
91
|
|
|
87
|
-
|
|
92
|
+
var tooltip = rod.internals?["tooltip"];
|
|
93
|
+
if (tooltip == null) return null;
|
|
88
94
|
|
|
89
|
-
|
|
95
|
+
final theme = Theme.of(context);
|
|
90
96
|
var tooltipTextStyle =
|
|
91
97
|
parseTextStyle(tooltip["text_style"], theme, const TextStyle())!;
|
|
92
98
|
if (tooltipTextStyle.color == null) {
|
|
@@ -97,6 +103,9 @@ BarTooltipItem? parseBarTooltipItem(Control rod, BuildContext context) {
|
|
|
97
103
|
return BarTooltipItem(
|
|
98
104
|
tooltip["text"] ?? rod.getDouble("to_y", 0)!.toString(), tooltipTextStyle,
|
|
99
105
|
textAlign: parseTextAlign(tooltip["text_align"], TextAlign.center)!,
|
|
106
|
+
textDirection: parseBool(tooltip["rtl"], false)!
|
|
107
|
+
? TextDirection.rtl
|
|
108
|
+
: TextDirection.ltr,
|
|
100
109
|
children: tooltip["text_spans"] != null
|
|
101
110
|
? parseTextSpans(tooltip["text_spans"], theme, (s, eventName,
|
|
102
111
|
[eventData]) {
|
|
@@ -175,3 +184,11 @@ BarChartRodStackItem parseBarChartRodStackItem(
|
|
|
175
184
|
rodStackItem.getBorderSide("border_side", Theme.of(context),
|
|
176
185
|
defaultValue: BorderSide.none)!);
|
|
177
186
|
}
|
|
187
|
+
|
|
188
|
+
BarChartAlignment? parseBarChartAlignment(String? value,
|
|
189
|
+
[BarChartAlignment? defaultValue]) {
|
|
190
|
+
if (value == null) return defaultValue;
|
|
191
|
+
return BarChartAlignment.values.firstWhereOrNull(
|
|
192
|
+
(e) => e.name.toLowerCase() == value.toLowerCase()) ??
|
|
193
|
+
defaultValue;
|
|
194
|
+
}
|
|
@@ -34,6 +34,7 @@ FlLine? parseFlLine(dynamic value, ThemeData theme, [FlLine? defaultValue]) {
|
|
|
34
34
|
if (value == null ||
|
|
35
35
|
(value['color'] == null &&
|
|
36
36
|
value['width'] == null &&
|
|
37
|
+
value['gradient'] == null &&
|
|
37
38
|
value['dash_pattern'] == null)) {
|
|
38
39
|
return defaultValue;
|
|
39
40
|
}
|
|
@@ -41,6 +42,7 @@ FlLine? parseFlLine(dynamic value, ThemeData theme, [FlLine? defaultValue]) {
|
|
|
41
42
|
return FlLine(
|
|
42
43
|
color: parseColor(value['color'], theme, Colors.black)!,
|
|
43
44
|
strokeWidth: parseDouble(value['width'], 2)!,
|
|
45
|
+
gradient: parseGradient(value['gradient'], theme),
|
|
44
46
|
dashArray: (value['dash_pattern'] as List?)
|
|
45
47
|
?.map((e) => parseInt(e))
|
|
46
48
|
.nonNulls
|
|
@@ -143,6 +145,8 @@ AxisTitles parseAxisTitles(Control? control) {
|
|
|
143
145
|
showTitles: control.getBool("show_labels", true)!,
|
|
144
146
|
reservedSize: control.getDouble("label_size", 22)!,
|
|
145
147
|
interval: control.getDouble("label_spacing"),
|
|
148
|
+
minIncluded: control.getBool("show_min", true)!,
|
|
149
|
+
maxIncluded: control.getBool("show_max", true)!,
|
|
146
150
|
getTitlesWidget: control.children("labels").isEmpty
|
|
147
151
|
? defaultGetTitle
|
|
148
152
|
: (double value, TitleMeta meta) {
|
|
@@ -155,6 +159,14 @@ AxisTitles parseAxisTitles(Control? control) {
|
|
|
155
159
|
));
|
|
156
160
|
}
|
|
157
161
|
|
|
162
|
+
FLHorizontalAlignment? parseFLHorizontalAlignment(String? value,
|
|
163
|
+
[FLHorizontalAlignment? defaultValue]) {
|
|
164
|
+
if (value == null) return defaultValue;
|
|
165
|
+
return FLHorizontalAlignment.values.firstWhereOrNull(
|
|
166
|
+
(e) => e.name.toLowerCase() == value.toLowerCase()) ??
|
|
167
|
+
defaultValue;
|
|
168
|
+
}
|
|
169
|
+
|
|
158
170
|
const eventMap = {
|
|
159
171
|
"FlPointerEnterEvent": "pointerEnter",
|
|
160
172
|
"FlPointerExitEvent": "pointerExit",
|
|
@@ -52,9 +52,10 @@ LineTooltipItem? parseLineTooltipItem(
|
|
|
52
52
|
Control dataPoint, LineBarSpot spot, BuildContext context) {
|
|
53
53
|
if (!dataPoint.getBool("show_tooltip", true)!) return null;
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
var tooltip = dataPoint.internals?["tooltip"];
|
|
56
|
+
if (tooltip == null) return null;
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
final theme = Theme.of(context);
|
|
58
59
|
var style = parseTextStyle(tooltip["text_style"], theme, const TextStyle())!;
|
|
59
60
|
if (style.color == null) {
|
|
60
61
|
style = style.copyWith(
|
|
@@ -65,6 +66,9 @@ LineTooltipItem? parseLineTooltipItem(
|
|
|
65
66
|
return LineTooltipItem(
|
|
66
67
|
tooltip["text"] ?? dataPoint.getDouble("y", 0)!.toString(), style,
|
|
67
68
|
textAlign: parseTextAlign(tooltip["text_align"], TextAlign.center)!,
|
|
69
|
+
textDirection: parseBool(tooltip["rtl"], false)!
|
|
70
|
+
? TextDirection.rtl
|
|
71
|
+
: TextDirection.ltr,
|
|
68
72
|
children: tooltip["text_spans"] != null
|
|
69
73
|
? parseTextSpans(tooltip["text_spans"], theme, (s, eventName,
|
|
70
74
|
[eventData]) {
|
|
@@ -89,7 +93,7 @@ LineTouchTooltipData? parseLineTouchTooltipData(
|
|
|
89
93
|
tooltipPadding: parsePadding(tooltip["padding"],
|
|
90
94
|
const EdgeInsets.symmetric(horizontal: 16, vertical: 8))!,
|
|
91
95
|
maxContentWidth: parseDouble(tooltip["max_width"], 120)!,
|
|
92
|
-
rotateAngle: parseDouble(tooltip["
|
|
96
|
+
rotateAngle: parseDouble(tooltip["rotation"], 0.0)!,
|
|
93
97
|
tooltipHorizontalOffset: parseDouble(tooltip["horizontal_offset"], 0)!,
|
|
94
98
|
tooltipBorder: parseBorderSide(tooltip["border_side"], theme,
|
|
95
99
|
defaultValue: BorderSide.none)!,
|
|
@@ -98,6 +102,8 @@ LineTouchTooltipData? parseLineTouchTooltipData(
|
|
|
98
102
|
fitInsideVertically: parseBool(tooltip["fit_inside_vertically"], false)!,
|
|
99
103
|
showOnTopOfTheChartBoxArea:
|
|
100
104
|
parseBool(tooltip["show_on_top_of_chart_box_area"], false)!,
|
|
105
|
+
tooltipHorizontalAlignment: parseFLHorizontalAlignment(
|
|
106
|
+
tooltip["horizontal_alignment"], FLHorizontalAlignment.center)!,
|
|
101
107
|
getTooltipItems: (List<LineBarSpot> touchedSpots) {
|
|
102
108
|
return touchedSpots
|
|
103
109
|
.map((LineBarSpot spot) => parseLineTooltipItem(
|
|
@@ -131,6 +137,7 @@ LineChartBarData parseLineChartBarData(
|
|
|
131
137
|
var belowLine = parseFlLine(chartData.get("below_line"), Theme.of(context));
|
|
132
138
|
var aboveLineCutoffY = chartData.getDouble("above_line_cutoff_y");
|
|
133
139
|
var belowLineCutoffY = chartData.getDouble("below_line_cutoff_y");
|
|
140
|
+
var stepDirection = chartData.getDouble("step_direction");
|
|
134
141
|
|
|
135
142
|
Map<FlSpot, Control> spots = {
|
|
136
143
|
for (var e in chartData.children("points"))
|
|
@@ -142,6 +149,10 @@ LineChartBarData parseLineChartBarData(
|
|
|
142
149
|
preventCurveOvershootingThreshold:
|
|
143
150
|
chartData.getDouble("prevent_curve_over_shooting_threshold", 10.0)!,
|
|
144
151
|
spots: barSpots[chartData.id] ?? [],
|
|
152
|
+
curveSmoothness: chartData.getDouble("curve_smoothness", 0.35)!,
|
|
153
|
+
show: chartData.visible,
|
|
154
|
+
isStepLineChart: stepDirection != null,
|
|
155
|
+
lineChartStepData: LineChartStepData(stepDirection: stepDirection ?? 0.5),
|
|
145
156
|
showingIndicators: chartData
|
|
146
157
|
.children("points")
|
|
147
158
|
.asMap()
|
|
@@ -152,6 +163,7 @@ LineChartBarData parseLineChartBarData(
|
|
|
152
163
|
.toList(),
|
|
153
164
|
isCurved: chartData.getBool("curved", false)!,
|
|
154
165
|
isStrokeCapRound: chartData.getBool("rounded_stroke_cap", false)!,
|
|
166
|
+
isStrokeJoinRound: chartData.getBool("rounded_stroke_join", false)!,
|
|
155
167
|
barWidth: chartData.getDouble("stroke_width", 2.0)!,
|
|
156
168
|
dashArray: dashPattern != null
|
|
157
169
|
? (dashPattern as List).map((e) => parseInt(e)).nonNulls.toList()
|
|
@@ -46,6 +46,7 @@ PieChartSectionData parsePieChartSectionData(
|
|
|
46
46
|
radius: section.getDouble("radius"),
|
|
47
47
|
showTitle: title != null,
|
|
48
48
|
title: title,
|
|
49
|
+
gradient: section.getGradient("gradient", theme),
|
|
49
50
|
titleStyle: section.getTextStyle("title_style", theme),
|
|
50
51
|
borderSide: section.getBorderSide("border_side", theme,
|
|
51
52
|
defaultValue: BorderSide.none)!,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import 'package:collection/collection.dart';
|
|
2
1
|
import 'package:equatable/equatable.dart';
|
|
3
2
|
import 'package:fl_chart/fl_chart.dart';
|
|
4
3
|
import 'package:flet/flet.dart';
|
|
@@ -25,34 +24,31 @@ class ScatterChartEventData extends Equatable {
|
|
|
25
24
|
List<Object?> get props => [eventType, spotIndex];
|
|
26
25
|
}
|
|
27
26
|
|
|
28
|
-
ScatterTouchTooltipData
|
|
29
|
-
BuildContext context, Control control, List<ScatterSpot> spots
|
|
30
|
-
|
|
31
|
-
var tooltip = control.get("tooltip");
|
|
32
|
-
if (tooltip == null) return defaultValue;
|
|
27
|
+
ScatterTouchTooltipData parseScatterTouchTooltipData(
|
|
28
|
+
BuildContext context, Control control, List<ScatterSpot> spots) {
|
|
29
|
+
var tooltip = control.get("tooltip") ?? {};
|
|
33
30
|
|
|
34
31
|
final theme = Theme.of(context);
|
|
35
32
|
|
|
36
33
|
return ScatterTouchTooltipData(
|
|
37
34
|
tooltipBorder: parseBorderSide(tooltip["border_side"], theme,
|
|
38
35
|
defaultValue: BorderSide.none)!,
|
|
39
|
-
rotateAngle: parseDouble(tooltip["
|
|
40
|
-
maxContentWidth: parseDouble(tooltip["max_width"])
|
|
41
|
-
tooltipPadding: parsePadding(tooltip["padding"]
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
rotateAngle: parseDouble(tooltip["rotation"], 0.0)!,
|
|
37
|
+
maxContentWidth: parseDouble(tooltip["max_width"], 120)!,
|
|
38
|
+
tooltipPadding: parsePadding(tooltip["padding"],
|
|
39
|
+
const EdgeInsets.symmetric(horizontal: 16, vertical: 8))!,
|
|
40
|
+
tooltipHorizontalAlignment: parseFLHorizontalAlignment(
|
|
41
|
+
tooltip["horizontal_alignment"], FLHorizontalAlignment.center)!,
|
|
42
|
+
tooltipHorizontalOffset: parseDouble(tooltip["horizontal_offset"], 0),
|
|
45
43
|
tooltipBorderRadius: parseBorderRadius(tooltip["border_radius"]),
|
|
46
|
-
fitInsideHorizontally:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// spots.indexWhere((spot) => spot.x == spot.x && spot.y == spot.y);
|
|
51
|
-
// var dp = control.children("spots")[spotIndex];
|
|
44
|
+
fitInsideHorizontally:
|
|
45
|
+
parseBool(tooltip["fit_inside_horizontally"], false)!,
|
|
46
|
+
fitInsideVertically: parseBool(tooltip["fit_inside_vertically"], false)!,
|
|
47
|
+
getTooltipColor: (ScatterSpot touchedSpot) {
|
|
52
48
|
return parseColor(
|
|
53
49
|
tooltip["bgcolor"], theme, const Color.fromRGBO(96, 125, 139, 1))!;
|
|
54
50
|
},
|
|
55
|
-
getTooltipItems: (touchedSpot) {
|
|
51
|
+
getTooltipItems: (ScatterSpot touchedSpot) {
|
|
56
52
|
var spotIndex = spots.indexWhere(
|
|
57
53
|
(spot) => spot.x == touchedSpot.x && spot.y == touchedSpot.y);
|
|
58
54
|
return parseScatterTooltipItem(
|
|
@@ -65,9 +61,10 @@ ScatterTooltipItem? parseScatterTooltipItem(
|
|
|
65
61
|
Control dataPoint, ScatterSpot spot, BuildContext context) {
|
|
66
62
|
if (!dataPoint.getBool("show_tooltip", true)!) return null;
|
|
67
63
|
|
|
68
|
-
|
|
64
|
+
var tooltip = dataPoint.internals?["tooltip"];
|
|
65
|
+
if (tooltip == null) return null;
|
|
69
66
|
|
|
70
|
-
|
|
67
|
+
final theme = Theme.of(context);
|
|
71
68
|
var style = parseTextStyle(tooltip["text_style"], theme, const TextStyle())!;
|
|
72
69
|
if (style.color == null) {
|
|
73
70
|
style = style.copyWith(color: spot.dotPainter.mainColor);
|
|
@@ -76,6 +73,10 @@ ScatterTooltipItem? parseScatterTooltipItem(
|
|
|
76
73
|
tooltip["text"] ?? dataPoint.getDouble("y").toString(),
|
|
77
74
|
textStyle: style,
|
|
78
75
|
textAlign: parseTextAlign(tooltip["text_align"], TextAlign.center)!,
|
|
76
|
+
textDirection: parseBool(tooltip["rtl"], false)!
|
|
77
|
+
? TextDirection.rtl
|
|
78
|
+
: TextDirection.ltr,
|
|
79
|
+
bottomMargin: parseDouble(tooltip["bottom_margin"]),
|
|
79
80
|
children: tooltip["text_spans"] != null
|
|
80
81
|
? parseTextSpans(tooltip["text_spans"], theme, (s, eventName,
|
|
81
82
|
[eventData]) {
|
flutter/flet_charts/pubspec.lock
CHANGED
|
@@ -13,10 +13,10 @@ packages:
|
|
|
13
13
|
dependency: transitive
|
|
14
14
|
description:
|
|
15
15
|
name: async
|
|
16
|
-
sha256:
|
|
16
|
+
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
|
|
17
17
|
url: "https://pub.dev"
|
|
18
18
|
source: hosted
|
|
19
|
-
version: "2.
|
|
19
|
+
version: "2.13.0"
|
|
20
20
|
boolean_selector:
|
|
21
21
|
dependency: transitive
|
|
22
22
|
description:
|
|
@@ -65,6 +65,14 @@ packages:
|
|
|
65
65
|
url: "https://pub.dev"
|
|
66
66
|
source: hosted
|
|
67
67
|
version: "3.0.6"
|
|
68
|
+
dbus:
|
|
69
|
+
dependency: transitive
|
|
70
|
+
description:
|
|
71
|
+
name: dbus
|
|
72
|
+
sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c"
|
|
73
|
+
url: "https://pub.dev"
|
|
74
|
+
source: hosted
|
|
75
|
+
version: "0.7.11"
|
|
68
76
|
device_info_plus:
|
|
69
77
|
dependency: transitive
|
|
70
78
|
description:
|
|
@@ -93,10 +101,10 @@ packages:
|
|
|
93
101
|
dependency: transitive
|
|
94
102
|
description:
|
|
95
103
|
name: fake_async
|
|
96
|
-
sha256: "
|
|
104
|
+
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
|
97
105
|
url: "https://pub.dev"
|
|
98
106
|
source: hosted
|
|
99
|
-
version: "1.3.
|
|
107
|
+
version: "1.3.3"
|
|
100
108
|
ffi:
|
|
101
109
|
dependency: transitive
|
|
102
110
|
description:
|
|
@@ -117,10 +125,10 @@ packages:
|
|
|
117
125
|
dependency: transitive
|
|
118
126
|
description:
|
|
119
127
|
name: file_picker
|
|
120
|
-
sha256:
|
|
128
|
+
sha256: ef7d2a085c1b1d69d17b6842d0734aad90156de08df6bd3c12496d0bd6ddf8e2
|
|
121
129
|
url: "https://pub.dev"
|
|
122
130
|
source: hosted
|
|
123
|
-
version: "10.
|
|
131
|
+
version: "10.3.1"
|
|
124
132
|
fl_chart:
|
|
125
133
|
dependency: "direct main"
|
|
126
134
|
description:
|
|
@@ -134,7 +142,7 @@ packages:
|
|
|
134
142
|
description:
|
|
135
143
|
path: "packages/flet"
|
|
136
144
|
ref: main
|
|
137
|
-
resolved-ref:
|
|
145
|
+
resolved-ref: "4ea9558543657d31dba3b11d6017beed2e16d447"
|
|
138
146
|
url: "https://github.com/flet-dev/flet.git"
|
|
139
147
|
source: git
|
|
140
148
|
version: "0.70.0"
|
|
@@ -176,10 +184,10 @@ packages:
|
|
|
176
184
|
dependency: transitive
|
|
177
185
|
description:
|
|
178
186
|
name: flutter_plugin_android_lifecycle
|
|
179
|
-
sha256:
|
|
187
|
+
sha256: "6382ce712ff69b0f719640ce957559dde459e55ecd433c767e06d139ddf16cab"
|
|
180
188
|
url: "https://pub.dev"
|
|
181
189
|
source: hosted
|
|
182
|
-
version: "2.0.
|
|
190
|
+
version: "2.0.29"
|
|
183
191
|
flutter_svg:
|
|
184
192
|
dependency: transitive
|
|
185
193
|
description:
|
|
@@ -226,10 +234,10 @@ packages:
|
|
|
226
234
|
dependency: transitive
|
|
227
235
|
description:
|
|
228
236
|
name: intl
|
|
229
|
-
sha256:
|
|
237
|
+
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
|
230
238
|
url: "https://pub.dev"
|
|
231
239
|
source: hosted
|
|
232
|
-
version: "0.
|
|
240
|
+
version: "0.20.2"
|
|
233
241
|
json_annotation:
|
|
234
242
|
dependency: transitive
|
|
235
243
|
description:
|
|
@@ -242,10 +250,10 @@ packages:
|
|
|
242
250
|
dependency: transitive
|
|
243
251
|
description:
|
|
244
252
|
name: leak_tracker
|
|
245
|
-
sha256:
|
|
253
|
+
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
|
246
254
|
url: "https://pub.dev"
|
|
247
255
|
source: hosted
|
|
248
|
-
version: "10.0.
|
|
256
|
+
version: "10.0.9"
|
|
249
257
|
leak_tracker_flutter_testing:
|
|
250
258
|
dependency: transitive
|
|
251
259
|
description:
|
|
@@ -362,10 +370,10 @@ packages:
|
|
|
362
370
|
dependency: transitive
|
|
363
371
|
description:
|
|
364
372
|
name: path_provider_foundation
|
|
365
|
-
sha256: "
|
|
373
|
+
sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd"
|
|
366
374
|
url: "https://pub.dev"
|
|
367
375
|
source: hosted
|
|
368
|
-
version: "2.4.
|
|
376
|
+
version: "2.4.2"
|
|
369
377
|
path_provider_linux:
|
|
370
378
|
dependency: transitive
|
|
371
379
|
description:
|
|
@@ -462,14 +470,22 @@ packages:
|
|
|
462
470
|
url: "https://pub.dev"
|
|
463
471
|
source: hosted
|
|
464
472
|
version: "0.2.0"
|
|
473
|
+
screenshot:
|
|
474
|
+
dependency: transitive
|
|
475
|
+
description:
|
|
476
|
+
name: screenshot
|
|
477
|
+
sha256: "63817697a7835e6ce82add4228e15d233b74d42975c143ad8cfe07009fab866b"
|
|
478
|
+
url: "https://pub.dev"
|
|
479
|
+
source: hosted
|
|
480
|
+
version: "3.0.0"
|
|
465
481
|
sensors_plus:
|
|
466
482
|
dependency: transitive
|
|
467
483
|
description:
|
|
468
484
|
name: sensors_plus
|
|
469
|
-
sha256: "
|
|
485
|
+
sha256: "89e2bfc3d883743539ce5774a2b93df61effde40ff958ecad78cd66b1a8b8d52"
|
|
470
486
|
url: "https://pub.dev"
|
|
471
487
|
source: hosted
|
|
472
|
-
version: "6.1.
|
|
488
|
+
version: "6.1.2"
|
|
473
489
|
sensors_plus_platform_interface:
|
|
474
490
|
dependency: transitive
|
|
475
491
|
description:
|
|
@@ -490,10 +506,10 @@ packages:
|
|
|
490
506
|
dependency: transitive
|
|
491
507
|
description:
|
|
492
508
|
name: shared_preferences_android
|
|
493
|
-
sha256: "
|
|
509
|
+
sha256: "5bcf0772a761b04f8c6bf814721713de6f3e5d9d89caf8d3fe031b02a342379e"
|
|
494
510
|
url: "https://pub.dev"
|
|
495
511
|
source: hosted
|
|
496
|
-
version: "2.4.
|
|
512
|
+
version: "2.4.11"
|
|
497
513
|
shared_preferences_foundation:
|
|
498
514
|
dependency: transitive
|
|
499
515
|
description:
|
|
@@ -607,18 +623,18 @@ packages:
|
|
|
607
623
|
dependency: transitive
|
|
608
624
|
description:
|
|
609
625
|
name: url_launcher_android
|
|
610
|
-
sha256: "
|
|
626
|
+
sha256: "0aedad096a85b49df2e4725fa32118f9fa580f3b14af7a2d2221896a02cd5656"
|
|
611
627
|
url: "https://pub.dev"
|
|
612
628
|
source: hosted
|
|
613
|
-
version: "6.3.
|
|
629
|
+
version: "6.3.17"
|
|
614
630
|
url_launcher_ios:
|
|
615
631
|
dependency: transitive
|
|
616
632
|
description:
|
|
617
633
|
name: url_launcher_ios
|
|
618
|
-
sha256:
|
|
634
|
+
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
|
|
619
635
|
url: "https://pub.dev"
|
|
620
636
|
source: hosted
|
|
621
|
-
version: "6.3.
|
|
637
|
+
version: "6.3.4"
|
|
622
638
|
url_launcher_linux:
|
|
623
639
|
dependency: transitive
|
|
624
640
|
description:
|
|
@@ -631,10 +647,10 @@ packages:
|
|
|
631
647
|
dependency: transitive
|
|
632
648
|
description:
|
|
633
649
|
name: url_launcher_macos
|
|
634
|
-
sha256:
|
|
650
|
+
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
|
|
635
651
|
url: "https://pub.dev"
|
|
636
652
|
source: hosted
|
|
637
|
-
version: "3.2.
|
|
653
|
+
version: "3.2.3"
|
|
638
654
|
url_launcher_platform_interface:
|
|
639
655
|
dependency: transitive
|
|
640
656
|
description:
|
|
@@ -679,10 +695,10 @@ packages:
|
|
|
679
695
|
dependency: transitive
|
|
680
696
|
description:
|
|
681
697
|
name: vector_graphics_compiler
|
|
682
|
-
sha256:
|
|
698
|
+
sha256: ca81fdfaf62a5ab45d7296614aea108d2c7d0efca8393e96174bf4d51e6725b0
|
|
683
699
|
url: "https://pub.dev"
|
|
684
700
|
source: hosted
|
|
685
|
-
version: "1.1.
|
|
701
|
+
version: "1.1.18"
|
|
686
702
|
vector_math:
|
|
687
703
|
dependency: transitive
|
|
688
704
|
description:
|
|
@@ -695,10 +711,10 @@ packages:
|
|
|
695
711
|
dependency: transitive
|
|
696
712
|
description:
|
|
697
713
|
name: vm_service
|
|
698
|
-
sha256:
|
|
714
|
+
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
|
699
715
|
url: "https://pub.dev"
|
|
700
716
|
source: hosted
|
|
701
|
-
version: "
|
|
717
|
+
version: "15.0.0"
|
|
702
718
|
web:
|
|
703
719
|
dependency: transitive
|
|
704
720
|
description:
|
|
@@ -727,10 +743,10 @@ packages:
|
|
|
727
743
|
dependency: transitive
|
|
728
744
|
description:
|
|
729
745
|
name: win32
|
|
730
|
-
sha256: "
|
|
746
|
+
sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03"
|
|
731
747
|
url: "https://pub.dev"
|
|
732
748
|
source: hosted
|
|
733
|
-
version: "5.
|
|
749
|
+
version: "5.14.0"
|
|
734
750
|
win32_registry:
|
|
735
751
|
dependency: transitive
|
|
736
752
|
description:
|
|
@@ -772,5 +788,5 @@ packages:
|
|
|
772
788
|
source: hosted
|
|
773
789
|
version: "6.5.0"
|
|
774
790
|
sdks:
|
|
775
|
-
dart: ">=3.
|
|
791
|
+
dart: ">=3.8.0 <4.0.0"
|
|
776
792
|
flutter: ">=3.29.0"
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
flet_charts/__init__.py,sha256=9WKqCmIz157g3fIFXteMg2RNl1FG2jMF77Dzc80lAD0,1972
|
|
2
|
-
flet_charts/bar_chart.py,sha256=xF5djoWzocuNicM408-5_K_CHaQHfXmyypzDThDDecQ,5186
|
|
3
|
-
flet_charts/bar_chart_group.py,sha256=eHbrtFqAn99VG2cqWf-yGgbpgcEOZFStpZqqnMP_z3w,691
|
|
4
|
-
flet_charts/bar_chart_rod.py,sha256=-VCHWlMFRu6PODgwYLvcusTow4QWRtNS7YZbOh73mAw,2395
|
|
5
|
-
flet_charts/bar_chart_rod_stack_item.py,sha256=XPLRpHdScmdde2UAau47OLSSL-AuQUbLpT1g7pNS9kI,623
|
|
6
|
-
flet_charts/chart_axis.py,sha256=BJW1ufpet2OueaDgbV82lJteT1G1wtzWtgB3vqeCb38,1330
|
|
7
|
-
flet_charts/line_chart.py,sha256=mmZlDlyaJYMPS07SP5Da5ML6LNijzG9My0GV0S-9jK0,5459
|
|
8
|
-
flet_charts/line_chart_data.py,sha256=LX1a_TL-i1fLtLVI23mxD4UaEs4CvubfXdjZK5ppPJ0,3369
|
|
9
|
-
flet_charts/line_chart_data_point.py,sha256=EHiAO0N1-E6mM7jED90fUqrGfxOWSt6XVtpkLDgaC-Q,2084
|
|
10
|
-
flet_charts/matplotlib_chart.py,sha256=9GABVU-1Jah7A8VCNiey7yrLvIWuVbiqjYLxkL035MM,1870
|
|
11
|
-
flet_charts/pie_chart.py,sha256=MCqx6zL4_hGJpLFFerE3dG3Fq0gEjvXemxDnl5yx6kg,1994
|
|
12
|
-
flet_charts/pie_chart_section.py,sha256=0A90iyBQi5rA3g8MfgxyLLGFR9p9X7zfzQEnFIEc6rM,2342
|
|
13
|
-
flet_charts/plotly_chart.py,sha256=UUR4lYhae_TeTH4juEei6QvRcdJ5dA4Xvhahpl7sOBo,1662
|
|
14
|
-
flet_charts/scatter_chart.py,sha256=ZgKL9vYADRz2soW1cznTfqFWKfwy3BuxHqtFqlS8tII,4954
|
|
15
|
-
flet_charts/scatter_chart_spot.py,sha256=-p2j-2hrxt16uBkfxtiOf9fBtZHvV9AQ1IFoiRX9zwg,2225
|
|
16
|
-
flet_charts/types.py,sha256=b8wp5rgC5TELnXTjER3-EC6-WGJOy0T20l9xzr8JZl8,5538
|
|
17
|
-
flet_charts-0.2.0.dev35.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
18
|
-
flutter/flet_charts/CHANGELOG.md,sha256=JbP72D9_B4ipiQh7Ezg1O6gSCUi9GA8CseA31Wg2oWw,40
|
|
19
|
-
flutter/flet_charts/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
20
|
-
flutter/flet_charts/README.md,sha256=rIiq6cSepxf6Rhq2bZGK0PcMAlkz8iTfruGf2hbKFHQ,75
|
|
21
|
-
flutter/flet_charts/analysis_options.yaml,sha256=tNXU6s4EJ4KmXROObwPetH5vkzRTVG4AH4gpMw85_EY,154
|
|
22
|
-
flutter/flet_charts/pubspec.lock,sha256=hN5qDC0xjVIYDSnoJSDmBiAJzxRMDZOat-gf1SPXdgE,23058
|
|
23
|
-
flutter/flet_charts/pubspec.yaml,sha256=RB9sfjlNztvDASX0kAJGmXIaV_NamD7U_dVEhS5FMJ8,570
|
|
24
|
-
flutter/flet_charts/lib/flet_charts.dart,sha256=66hr4Shizat1MIyu957NiJI_xXYOSeOJbFI489qw7ok,70
|
|
25
|
-
flutter/flet_charts/lib/src/bar_chart.dart,sha256=W-W8jdPk8zD2WqiPVoeNjCZ5hZG51ad2Ohr6rNv1Jfk,3565
|
|
26
|
-
flutter/flet_charts/lib/src/extension.dart,sha256=ag-uvBKJQ1t38ySvkyFYheRFL7YITk7Pj0Eahf788pE,702
|
|
27
|
-
flutter/flet_charts/lib/src/line_chart.dart,sha256=iij6QsZG0PgSCnZoK9YHQTwH7nJnM1_pNrb2zt-Mtk8,8733
|
|
28
|
-
flutter/flet_charts/lib/src/pie_chart.dart,sha256=WQWrUcPjTj2ywUtA2ZwAwRmzv1mouS17Hj-uSOJtD-c,2384
|
|
29
|
-
flutter/flet_charts/lib/src/scatter_chart.dart,sha256=GDvMhFfNzNlsrMD0vTwB39k4QNLGQSIN-ciDW9tR-yw,5521
|
|
30
|
-
flutter/flet_charts/lib/src/utils/bar_chart.dart,sha256=SemOqBhSSl24XZ3GRh-8U0QL-ATrVWD5CFq07-6IADI,6308
|
|
31
|
-
flutter/flet_charts/lib/src/utils/charts.dart,sha256=1r4YfLGtOIssLyCBxQmCggSv2Zmy9QEdME4KMDkjwoU,5973
|
|
32
|
-
flutter/flet_charts/lib/src/utils/line_chart.dart,sha256=YV7XZT7LS3RNfxy_NkrMlFlowH1DDGw5bY7eZ2O0ksA,7980
|
|
33
|
-
flutter/flet_charts/lib/src/utils/pie_chart.dart,sha256=7KYpZbJS-PsCt5hpwu0g43kRswkvbEDFm_FGmCJC_fk,1796
|
|
34
|
-
flutter/flet_charts/lib/src/utils/scatter_chart.dart,sha256=_OhV0WJ8XjDOWqp2Z9F1QPQTKWvJf9q5vXxWXm0TKXk,3279
|
|
35
|
-
flet_charts-0.2.0.dev35.dist-info/METADATA,sha256=LolSmrXw8POf8ZRYrt0mBA1Sce1YmIXATiMTUXHDUAM,2175
|
|
36
|
-
flet_charts-0.2.0.dev35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
37
|
-
flet_charts-0.2.0.dev35.dist-info/top_level.txt,sha256=CVHmtljbPFTyfCiru5bxX1vvWL8L6rtUbV9bqqkSxFE,20
|
|
38
|
-
flet_charts-0.2.0.dev35.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|