I upgraded rive 0.14.11 to 0.15.0-dev.1 (rive_native 0.1.11 to 0.2.0-dev.1) and Rive widgets
stopped painting in two cases. Going back to 0.14.11 fixes both, nothing else changed.
Only happens on Android, iOS is fine.
Setup
- rive 0.15.0-dev.1, rive_native 0.2.0-dev.1
- Flutter 3.44.8 stable, Android with Impeller. Not reproducible on iOS.
Factory.rive
- One .riv (~220 KB) decoded once at startup with
File.asset and shared through a provider.
Several RiveWidgets alive at the same time, each with its own RiveWidgetController and
its own artboard selected by name.
1. Widget never repaints after controller.active goes false and then true again
I pause offscreen animations with controller.active = false and set it back to true when
they get visible again. Works on 0.14.11. On 0.15.0-dev.1 the widget never paints again, it
stays on the last frame, or stays blank if it was paused before its first paint. View model
writes still work.
2. Several widgets mounted at once stay blank for a few seconds
A scrollable sheet mounts 3-5 RiveWidgets at once, all from the same decoded File. Some
render empty for a few seconds after opening and then appear one by one.
What I tried, none of it helped
controller.scheduleRepaint() right after setting active = true
- Making sure the state machine never settles (kept a layer running) so
advance() keeps
returning true
- Giving every widget its own decoded
File so each gets its own session. This made case 2
worse, all widgets were blank instead of only some
- Putting all widgets into one
RivePanel shared texture. This fixed case 1, but it gives me
scroll jank in a list and I lose per widget rounded corner clipping, so I can't use it
Repro
No minimal project yet, I can build one if that helps.
Case 1: decode a .riv with Factory.rive, render a RiveWidget, set
controller.active = false around the first frame, set it back to true a second later. It
does not paint again.
Case 2: mount 3-5 RiveWidgets from the same decoded File with a heavier artboard.
I pinned 0.14.11 for now but would like to move to 0.15 for the deferred renderer.
I upgraded rive 0.14.11 to 0.15.0-dev.1 (rive_native 0.1.11 to 0.2.0-dev.1) and Rive widgets
stopped painting in two cases. Going back to 0.14.11 fixes both, nothing else changed.
Only happens on Android, iOS is fine.
Setup
Factory.riveFile.assetand shared through a provider.Several
RiveWidgets alive at the same time, each with its ownRiveWidgetControllerandits own artboard selected by name.
1. Widget never repaints after
controller.activegoes false and then true againI pause offscreen animations with
controller.active = falseand set it back to true whenthey get visible again. Works on 0.14.11. On 0.15.0-dev.1 the widget never paints again, it
stays on the last frame, or stays blank if it was paused before its first paint. View model
writes still work.
2. Several widgets mounted at once stay blank for a few seconds
A scrollable sheet mounts 3-5
RiveWidgets at once, all from the same decodedFile. Somerender empty for a few seconds after opening and then appear one by one.
What I tried, none of it helped
controller.scheduleRepaint()right after settingactive = trueadvance()keepsreturning true
Fileso each gets its own session. This made case 2worse, all widgets were blank instead of only some
RivePanelshared texture. This fixed case 1, but it gives mescroll jank in a list and I lose per widget rounded corner clipping, so I can't use it
Repro
No minimal project yet, I can build one if that helps.
Case 1: decode a .riv with
Factory.rive, render aRiveWidget, setcontroller.active = falsearound the first frame, set it back to true a second later. Itdoes not paint again.
Case 2: mount 3-5
RiveWidgets from the same decodedFilewith a heavier artboard.I pinned 0.14.11 for now but would like to move to 0.15 for the deferred renderer.