如何传递VoidCallback?Flutter Animator监听函数传递异常求助
解决Flutter Animator组件endAnimationListener回调异常问题
嘿,我看了你的代码,发现几个小问题导致了异常,咱们一步步来修正:
1. 先搞定基础拼写错误
- 你把Dart内置的回调类型
VoidCallback写成了VoidCallBack(少了一个字母l),这个拼写必须准确,否则会触发类型不匹配的异常。 - 构造函数里的
this._thidation明显是手滑打错了,应该对应类里定义的_duration变量。
2. 核心问题:endAnimationListener的回调执行逻辑错误
你现在写的endAnimationListener: (_) => _action只是把_action这个函数对象返回了,但并没有执行它。endAnimationListener需要的是一个会被触发执行的回调逻辑,所以你需要在回调里调用_action(),而不是返回函数本身。
修正后的完整代码
class AnimatedFade extends StatelessWidget { final Duration _duration; final VoidCallback _action; // 修正拼写错误 // 修正构造函数的参数拼写 AnimatedFade(this._duration, this._action); @override Widget build(BuildContext context) { return Animator( duration: _duration, // 执行_action函数,而不是返回函数对象 endAnimationListener: (_) => _action(), // 别忘了添加child属性,Animator组件必须包含子Widget child: YourTargetChildWidget(), // 替换成你实际要用的子组件 ); } }
调用示例
你传递回调的方式是对的,比如这样使用:
AnimatedFade( Duration(milliseconds: 600), () { // 这里写动画结束后要执行的逻辑 print("淡入淡出动画执行完毕!"); }, )
另外补充一点:Animator组件必须传入child属性,你的原代码里漏掉了这部分,这也可能是触发异常的原因之一哦~
内容的提问来源于stack exchange,提问作者Little Monkey
相关产品推荐
相关产品推荐

