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

Flutter中Widget的重建条件:无状态组件值不变时是否重建?

当StatelessWidget参数值相同时,组件是否会重建?

我们分三种典型场景来分析:

场景1:使用const修饰的组件

/// 此场景下为const组件,因此不会被重建。
const Text("hi") // 不重建。

用const修饰的组件会被Flutter缓存,只要参数不发生变化,即便父组件触发setState,该组件也不会重建。

场景2:参数值发生变更时

/// 文本已变更,因此会被重建。
String text = "hi"

Text(text)

setState(() {
    text = "hello"  // Text组件重建。
});

当组件的参数值(这里是text)从"hi"变为"hello"时,父组件调用setState后,Text组件会因为参数变化而触发重建。

场景3:参数值未变更或被设置为相同值时

/// 此处Text组件是否会重建?
String text = "hi"

Text(text)

setState(() {
    // 无操作 或 text = "hi";
});

这种情况下,Text组件会重建。因为Flutter中调用setState会触发父组件的完整重建流程,默认逻辑下,不管子组件的参数有没有变化,都会跟着执行重建。如果想避免这种无意义的重建,可以给组件添加const修饰,或者通过Equatable、自定义shouldRebuild逻辑来做性能优化。

内容的提问来源于stack exchange,提问作者dylan.kwon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:45:33