You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every we tap the Set State button will print test on the debug console. That's mean onInit method is called every setState called on it's parent widget.
Expected behavior
<-- A clear and concise description of what you expected to happen. -->
onInit method called once
Device & Versions (please complete the following information)
Device: [e.g. Android Emulator, iOS Simulator]
OS: [e.g. Android SDK API Level 30, iOS 14.5]
Flutter Version: Copy-paste the output of flutter --version
e.g.:
<-- Add any other context about the problem here. -->
I have workaround, that the custom widget must be StatefulWidget, and declare onInit method as member of the state class.
@overrideWidgetbuild(BuildContext context) {
returnRiveAnimation.asset(
widget.icon,
stateMachines:const ['mode'],
fit:BoxFit.contain,
onInit: _onInit,
);
}
void_onInit(artboard) {
print('this will be printed once');
}
The text was updated successfully, but these errors were encountered:
There is a serious bug that is causing poor performance in a frequently rebuild context with a rive animation. On an iPhone 13 Pro, the frame rate has dropped from 60 fps to around 20 fps, which is a significant decrease. This is a serious issue that needs to be addressed.
This resolves a performance and usability issue where certain conditions would result in Rive needlessly reconfiguring/initializing the Rive artboard (as well as downloading/loading Rive files). If `onInit`, `animations`, `controllers`, or `stateMachines` were passed in as an argument to `RiveAnimation` the above issue is triggered on each widget rebuild. Under certain conditions this could result in an animation constantly restarting, bad performance, or Flutter ending up in a `setState` callback loop.
This PR also clears the list of local controllers each time init is called.
Resolves: #277
This also fixes bugs in our example app
- Play/Pause not working
- One shot animation behaving oddly
Diffs=
9af05d044 docs: update changelog
cb7fd6d14 test: add rive animation onInit tests
107ae16bc refactor: naming and call logic
6857aa691 docs: add additional code docs
f3ba4f015 perf: fix didUpdateWidget configure loop
7d0aaaff3 Adjust RiveAnimation didUpdateWidget condition (#278)
d4c6dd4ab Add more helper functions
6a8f9e249 Fix tess for C++11 and add to github action (#4571)
c8b5fdadd More SIMD features
87f079a10 RawPath::Iter improvements
<-- Thanks for using Rive!
Description
<-- A clear and concise description of what the problem is. -->
onInit called every setState on parent widget
Steps To Reproduce
Steps to reproduce the behavior:
test
on the debug console. That's mean onInit method is called every setState called on it's parent widget.Expected behavior
<-- A clear and concise description of what you expected to happen. -->
onInit method called once
Device & Versions (please complete the following information)
flutter --version
e.g.:
Additional context
<-- Add any other context about the problem here. -->
I have workaround, that the custom widget must be StatefulWidget, and declare onInit method as member of the state class.
The text was updated successfully, but these errors were encountered: