"WidgetsBinding.instance!.addPostFrameCallback((_) => yourFunction(context));"不执行



所以我创建了一个自定义导航栏,当你点击图标时它会运行图标的动画

问题:当启动应用程序时,应该执行特定图标的动画。为此,我寻找了一个方法,运行在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();

最新更新