Flutter代码同时存在两个..函数时无法运行求助
问题原因及解决方案
这个问题的核心是Flutter中AnimationController的addListener()和addStatusListener()方法返回值为void,而你使用了级联运算符..进行链式调用,这就导致了语法错误。
级联运算符..的工作逻辑是调用对象的方法后返回对象本身,这样才能继续链式调用后续方法。但addListener()和addStatusListener()执行后不会返回当前的AnimationController实例,而是返回void,所以当你写完..addListener(...)后,再用..去调用addStatusListener()时,相当于在void类型上调用方法,自然会报错。
当你注释掉其中一个方法时,级联运算符只执行一次,比如_controller..addListener(...),这本质上和直接调用_controller.addListener(...)等价,所以不会触发错误。
正确写法
把两个监听方法分开调用,不要使用级联运算符链式写在一起:
// 正确示例 _controller.addListener(() { // 这里写你的监听回调逻辑 }); _controller.addStatusListener((AnimationStatus status) { // 这里写你的状态监听回调逻辑 });
另外可以检查下你的代码是否和视频中的写法一致——有些旧版Flutter教程可能存在写法疏漏,或者你抄代码时误加了级联运算符,按上面的方式拆分调用就能解决问题。
内容的提问来源于stack exchange,提问作者user17281101
相关产品推荐
相关产品推荐

