Skip to content

Commit

Permalink
BREAKING: Add TitleMeta parameter in the SideTitleWidget instead of a…
Browse files Browse the repository at this point in the history
…xisSide

This way, we have more access to the TitleMeta properties.
  • Loading branch information
imaNNeo committed Dec 25, 2024
1 parent ddfd80a commit 19132d5
Show file tree
Hide file tree
Showing 19 changed files with 46 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ class BarChartSample1State extends State<BarChartSample1> {
break;
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 16,
child: text,
);
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/bar/bar_chart_sample2.dart
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ class BarChartSample2State extends State<BarChartSample2> {
return Container();
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 0,
child: Text(text, style: style),
);
Expand All @@ -209,7 +209,7 @@ class BarChartSample2State extends State<BarChartSample2> {
);

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 16, //margin top
child: text,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class _BarChart extends StatelessWidget {
break;
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 4,
child: Text(text, style: style),
);
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/bar/bar_chart_sample4.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class BarChartSample4State extends State<BarChartSample4> {
break;
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(text, style: style),
);
}
Expand All @@ -52,7 +52,7 @@ class BarChartSample4State extends State<BarChartSample4> {
fontSize: 10,
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(
meta.formattedValue,
style: style,
Expand Down
8 changes: 4 additions & 4 deletions example/lib/presentation/samples/bar/bar_chart_sample5.dart
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class BarChartSample5State extends State<BarChartSample5> {
break;
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(text, style: style),
);
}
Expand Down Expand Up @@ -93,7 +93,7 @@ class BarChartSample5State extends State<BarChartSample5> {
return Container();
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(text, style: style),
);
}
Expand All @@ -108,7 +108,7 @@ class BarChartSample5State extends State<BarChartSample5> {
}
return SideTitleWidget(
angle: AppUtils().degreeToRadian(value < 0 ? -45 : 45),
axisSide: meta.axisSide,
meta: meta,
space: 4,
child: Text(
text,
Expand All @@ -128,7 +128,7 @@ class BarChartSample5State extends State<BarChartSample5> {
}
return SideTitleWidget(
angle: AppUtils().degreeToRadian(90),
axisSide: meta.axisSide,
meta: meta,
space: 0,
child: Text(
text,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class BarChartSample6 extends StatelessWidget {
text = '';
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(text, style: style),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class _BarChartSample7State extends State<BarChartSample7> {
getTitlesWidget: (value, meta) {
final index = value.toInt();
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: _IconWidget(
color: widget.dataList[index].color,
isSelected: touchedGroupIndex == index,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ class _LineChart extends StatelessWidget {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 10,
child: text,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ class _LineChartSample12State extends State<LineChartSample12> {
getTitlesWidget: (double value, TitleMeta meta) {
final date = _bitcoinPriceHistory![value.toInt()].$1;
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Transform.rotate(
angle: -45 * 3.14 / 180,
child: Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class _LineChartSample2State extends State<LineChartSample2> {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: text,
);
}
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/line/line_chart_sample3.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class _LineChartSample3State extends State<LineChartSample3> {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 6,
fitInside: fitInsideLeftTitle
? SideTitleFitInsideData.fromTitleMeta(meta)
Expand All @@ -113,7 +113,7 @@ class _LineChartSample3State extends State<LineChartSample3> {
}
return SideTitleWidget(
space: 4,
axisSide: meta.axisSide,
meta: meta,
fitInside: fitInsideBottomTitle
? SideTitleFitInsideData.fromTitleMeta(meta, distanceFromEdge: 0)
: SideTitleFitInsideData.disable(),
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/line/line_chart_sample4.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class LineChartSample4 extends StatelessWidget {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 4,
child: Text(
text,
Expand All @@ -82,7 +82,7 @@ class LineChartSample4 extends StatelessWidget {
fontSize: 12,
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text('\$ ${value + 0.5}', style: style),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class _LineChartSample5State extends State<LineChartSample5> {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(text, style: style),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class LineChartSample6 extends StatelessWidget {
color: AppColors.mainTextColor2,
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(value.toInt().toString(), style: style),
);
}
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/line/line_chart_sample7.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class LineChartSample7 extends StatelessWidget {
}

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 4,
child: Text(text, style: style),
);
Expand All @@ -75,7 +75,7 @@ class LineChartSample7 extends StatelessWidget {
const style = TextStyle(fontSize: 10);

return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(
'\$ ${value + 0.5}',
style: style,
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/line/line_chart_sample8.dart
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class _LineChartSample8State extends State<LineChartSample8> {
color: AppColors.mainTextColor1,
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Text(meta.formattedValue, style: style),
);
}
Expand Down Expand Up @@ -106,7 +106,7 @@ class _LineChartSample8State extends State<LineChartSample8> {
throw StateError('Invalid');
}
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
child: Icon(
icon,
color: color,
Expand Down
4 changes: 2 additions & 2 deletions example/lib/presentation/samples/line/line_chart_sample9.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class LineChartSample9 extends StatelessWidget {
fontSize: min(18, 18 * chartWidth / 300),
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 16,
child: Text(meta.formattedValue, style: style),
);
Expand All @@ -35,7 +35,7 @@ class LineChartSample9 extends StatelessWidget {
fontSize: min(18, 18 * chartWidth / 300),
);
return SideTitleWidget(
axisSide: meta.axisSide,
meta: meta,
space: 16,
child: Text(meta.formattedValue, style: style),
);
Expand Down
17 changes: 10 additions & 7 deletions lib/src/chart/base/axis_chart/axis_chart_widgets.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class SideTitleWidget extends StatefulWidget {
const SideTitleWidget({
super.key,
required this.child,
required this.axisSide,
required this.meta,
this.space = 8.0,
this.angle = 0.0,
this.fitInside = const SideTitleFitInsideData(
Expand All @@ -27,7 +27,7 @@ class SideTitleWidget extends StatefulWidget {
),
});

final AxisSide axisSide;
final TitleMeta meta;
final double space;
final Widget child;
final double angle;
Expand All @@ -53,14 +53,14 @@ class SideTitleWidget extends StatefulWidget {
}

class _SideTitleWidgetState extends State<SideTitleWidget> {
Alignment _getAlignment() => switch (widget.axisSide) {
Alignment _getAlignment() => switch (widget.meta.axisSide) {
AxisSide.left => Alignment.centerRight,
AxisSide.top => Alignment.bottomCenter,
AxisSide.right => Alignment.centerLeft,
AxisSide.bottom => Alignment.topCenter,
};

EdgeInsets _getMargin() => switch (widget.axisSide) {
EdgeInsets _getMargin() => switch (widget.meta.axisSide) {
AxisSide.left => EdgeInsets.only(right: widget.space),
AxisSide.top => EdgeInsets.only(bottom: widget.space),
AxisSide.right => EdgeInsets.only(left: widget.space),
Expand All @@ -82,7 +82,7 @@ class _SideTitleWidgetState extends State<SideTitleWidget> {
if (context == null) return;

// Set size based on its axis side
final size = switch (widget.axisSide) {
final size = switch (widget.meta.axisSide) {
AxisSide.left || AxisSide.right => context.size?.height ?? 0,
AxisSide.top || AxisSide.bottom => context.size?.width ?? 0,
};
Expand Down Expand Up @@ -111,7 +111,7 @@ class _SideTitleWidgetState extends State<SideTitleWidget> {
offset: !widget.fitInside.enabled
? Offset.zero
: AxisChartHelper().calcFitInsideOffset(
axisSide: widget.axisSide,
axisSide: widget.meta.axisSide,
childSize: _childSize,
parentAxisSize: widget.fitInside.parentAxisSize,
axisPosition: widget.fitInside.axisPosition,
Expand All @@ -123,7 +123,10 @@ class _SideTitleWidgetState extends State<SideTitleWidget> {
key: widgetKey,
margin: _getMargin(),
alignment: _getAlignment(),
child: widget.child,
child: RotatedBox(
quarterTurns: -widget.meta.rotationQuarterTurns,
child: widget.child,
),
),
),
);
Expand Down
9 changes: 9 additions & 0 deletions lib/src/extensions/size_extension.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'dart:ui';

extension SizeExtension on Size {
Size rotateByQuarterTurns(int quarterTurns) => switch (quarterTurns % 4) {
0 || 2 => this,
1 || 3 => Size(height, width),
_ => throw ArgumentError('Invalid quarterTurns $quarterTurns'),
};
}

0 comments on commit 19132d5

Please # to comment.