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 ..artboard = artboard
..fit = fit ..fit = fit
..alignment = alignment ..alignment = alignment
..intrinsicSize =
artboard == null ? Size.zero : Size(artboard.width, artboard.height)
..useIntrinsicSize = useIntrinsicSize; ..useIntrinsicSize = useIntrinsicSize;
} }
@ -34,6 +36,8 @@ class Rive extends LeafRenderObjectWidget {
..artboard = artboard ..artboard = artboard
..fit = fit ..fit = fit
..alignment = alignment ..alignment = alignment
..intrinsicSize =
artboard == null ? Size.zero : Size(artboard.width, artboard.height)
..useIntrinsicSize = useIntrinsicSize; ..useIntrinsicSize = useIntrinsicSize;
} }

View File

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