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

Flutter中Visibility组件visible为false时子组件仍触发断言的原因

问题解答
  • 核心原因在于:组件构造与组件树挂载是两个独立阶段
    • 当你写出Visibility(child: Tooltip(...), visible: false)这样的代码时,Tooltip的构造函数已经被执行,它内部的断言会在实例创建阶段就触发,完全不受后续Visibility是否将其纳入组件树的影响。
    • Visibility源码里的result = visible ? child : replacement,只是在组件build阶段决定最终挂载哪个组件到树中,但child实例的创建(包括构造时的断言检查)早在这一步之前就完成了。
  • 打个通俗的比方:你提前做好了一个蛋糕(创建Tooltip实例),后来决定不把它摆上餐桌(不加入组件树),但蛋糕制作过程中的质量检查(断言)在做好的时候就已经完成了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:13:10