You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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后的正确写法(你的代码本身无问题,版本达标即可运行):

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:47:36