所以我创建了一个自定义导航栏,当你点击图标时它会运行图标的动画
问题:当启动应用程序时,应该执行特定图标的动画。为此,我寻找了一个方法,运行在Widget构建完成。
Code I found:
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) => yourFunction(context));}
我代码:
class NavBar extends StatefulWidget {
NavBar({Key? key}) : super(key: key);
@override
_NavBarState createState() => _NavBarState();
}
class _NavBarState extends State<NavBar> {
List<IconSpecs> iconSpecsLst = [
IconSpecs(name: 'list', height: 69, width: 69),
IconSpecs(name: 'checkmark', height: 60, width: 60),
IconSpecs(name: 'settings', height: 60, width: 60),
];
late List<RiveIcon> icons;
@override
void initState() {
super.initState();
icons = iconSpecsLst
.map(
(object) => RiveIcon(
iconSpecs: object,
),
)
.toList();
WidgetsBinding.instance!
.addPostFrameCallback((_) => setAnimation(icons, 2));
}
setAnimation(List<RiveIcon> icons, int active) {
icons[active].activeInput?.value = true;
for (int i = 0; i < icons.length; i++) {
if (i != active) {
icons[i].activeInput?.value = false;
}
}
}
我将它添加到我的代码中,但它没有执行。我没有任何错误信息
如果没有绘制下一帧,则不调用回调。
强制绘制下一帧,调用ensureVisualUpdate
:
WidgetsBinding.instance!.addPostFrameCallback((_) {
setAnimation(icons, 2);
});
WidgetsBinding.instance!.ensureVisualUpdate();