Adding support for intrinsic size.

This commit is contained in:
Luigi Rosso
2021-01-23 11:10:25 -08:00
parent 0a66bb76be
commit 09cff9b794
2 changed files with 14 additions and 1 deletions

View File

@ -24,6 +24,8 @@ class Rive extends LeafRenderObjectWidget {
..artboard = artboard
..fit = fit
..alignment = alignment
..intrinsicSize =
artboard == null ? Size.zero : Size(artboard.width, artboard.height)
..useIntrinsicSize = useIntrinsicSize;
}
@ -34,6 +36,8 @@ class Rive extends LeafRenderObjectWidget {
..artboard = artboard
..fit = fit
..alignment = alignment
..intrinsicSize =
artboard == null ? Size.zero : Size(artboard.width, artboard.height)
..useIntrinsicSize = useIntrinsicSize;
}

View File

@ -12,6 +12,12 @@ abstract class RiveRenderBox extends RenderBox {
Alignment _alignment;
bool _useIntrinsicSize = false;
@override
Size computeDryLayout(BoxConstraints constraints) {
return constraints
.constrainSizeAndAttemptToPreserveAspectRatio(_intrinsicSize);
}
bool get useIntrinsicSize => _useIntrinsicSize;
set useIntrinsicSize(bool value) {
if (_useIntrinsicSize == value) {
@ -66,7 +72,10 @@ abstract class RiveRenderBox extends RenderBox {
@override
void performResize() {
size = _useIntrinsicSize ? constraints.smallest : constraints.biggest;
if (_useIntrinsicSize) {
super.performResize();
}
size = constraints.biggest;
}
@override