diff --git a/lib/src/rive.dart b/lib/src/rive.dart index 249bfeb..28beb6b 100644 --- a/lib/src/rive.dart +++ b/lib/src/rive.dart @@ -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; } diff --git a/lib/src/rive_render_box.dart b/lib/src/rive_render_box.dart index 4a4e0d2..93ce25b 100644 --- a/lib/src/rive_render_box.dart +++ b/lib/src/rive_render_box.dart @@ -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