From 09cff9b79462724c3852c61e5d7d3832f4c27713 Mon Sep 17 00:00:00 2001 From: Luigi Rosso <luigi.rosso@gmail.com> Date: Sat, 23 Jan 2021 11:10:25 -0800 Subject: [PATCH] Adding support for intrinsic size. --- lib/src/rive.dart | 4 ++++ lib/src/rive_render_box.dart | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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