Flutter3.0升级后StatefulWidget中setState未被引用报错排查
Flutter 升级3.0.1后 StatefulWidget 报setState未引用的解决方法
问题根源
该报错和StatelessWidget误用setState的场景无关,核心原因是setState的调用语法写错了。你在onPressed回调中写的setState() { _icon = Icons.delete; }是在当前作用域内定义了一个和父类方法同名的自定义函数,这个函数既不符合框架setState的方法签名(要求传入一个VoidCallback类型的回调参数),也从未被实际调用,Flutter 3.0版本相较2.X加强了语法校验和作用域检查,因此直接抛出未引用的编译错误。
修复方案
将错误的setState写法替换为标准的调用格式,传入状态更新的回调函数即可,修正后的IconButton代码如下:
IconButton( onPressed: () { // 标准setState调用:传入执行状态更新的匿名回调 setState(() { _icon = Icons.delete; }); AuthController.deleteAmi(widget.idRelation.toString()); }, icon: Icon( _icon, color: CustomColors.MAIN_PURPLE, size: 20, ), )
如果替换代码后仍有缓存类报错,依次执行以下命令清理缓存重启编译即可:
flutter clean flutter pub get
内容的提问来源于stack exchange,提问作者Dylan L
相关产品推荐
相关产品推荐

