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

Flutter中StatelessWidget使用const的好处及示例代码疑问

原因主要有以下两点:

  • 第一,_MyAppBar的build方法内部依赖了Theme.of(context)获取当前全局主题的标题样式,这个调用默认会让当前Widget监听主题数据的变化。如果将_MyAppBar()用const修饰,Widget会被作为常量实例全局缓存,后续主题发生变更时,该实例不会重新执行build方法拿最新的主题样式,导致UI展示不符合预期。
  • 第二,示例中的_MyAppBar默认没有定义const构造函数,哪怕你手动给它加上const构造,使用const _MyAppBar()实例化的话,也会因为上面提到的动态依赖问题无法正常响应主题变化,官方示例故意不使用const修饰就是为了避免这个问题。

补充:对比旁边使用const修饰的SliverToBoxAdapter和SizedBox,二者的入参都是固定常量,没有依赖任何动态变化的上下文数据,用const修饰可以减少不必要的重绘,反而能提升性能,和_MyAppBar的场景完全不同。

内容的提问来源于stack exchange,提问作者rozerro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:02