Flutter替换MaterialStateProperty为WidgetStateProperty后编译报错
问题解决:WidgetStateProperty未找到编译错误
错误原因:
WidgetStateProperty是Flutter 3.10及以上版本才新增的API,用于替代被废弃的MaterialStateProperty。你的编译报错说明当前项目使用的Flutter SDK版本低于3.10,和Xcode版本无关,无需更新Xcode。是否继续使用废弃的
MaterialStateProperty:- 若项目需要兼容低版本Flutter,可以暂时继续使用
MaterialStateProperty。它虽被标记为废弃,但在后续多个Flutter版本中仍会保持可用,不会直接导致代码失效。 - 若要彻底迁移到
WidgetStateProperty,需先将Flutter SDK升级至3.10或更高版本,升级后执行以下命令清理缓存并更新依赖:flutter clean flutter pub get
- 若项目需要兼容低版本Flutter,可以暂时继续使用
代码参考:
升级Flutter后的正确写法(你的代码本身无问题,版本达标即可运行):final WidgetStateProperty<Icon?> thumbIcon = WidgetStateProperty.resolveWith<Icon?>( (Set<WidgetState> states) { if (states.contains(WidgetState.selected)) { return const Icon(Icons.check); } return const Icon(Icons.close); }, );兼容低版本的写法:
final MaterialStateProperty<Icon?> thumbIcon = MaterialStateProperty.resolveWith<Icon?>( (Set<MaterialState> states) { if (states.contains(MaterialState.selected)) { return const Icon(Icons.check); } return const Icon(Icons.close); }, );
内容的提问来源于stack exchange,提问作者Robban13
相关产品推荐
相关产品推荐

