Flutter 中显示隐藏组件的对比

Flutter 中显示隐藏组件的对比

主要显示隐藏组件

1. Visibility 组件

Visibility(
  visible: condition,
  child: YourWidget(),
)
  • 特点:通过 visible 属性控制子组件的可见性
  • 渲染行为:即使隐藏也会占用布局空间
  • 性能:隐藏时仍会进行布局计算

2. Opacity 组件

Opacity(
  opacity: condition ? 1.0 : 0.0,
  child: YourWidget(),
)
  • 特点:通过透明度控制视觉效果
  • 渲染行为:隐藏时不透明但仍占用空间
  • 交互:隐藏后仍可接收手势事件

3. AnimatedOpacity 组件

AnimatedOpacity(
  opacity: condition ? 1.0 : 0.0,
  duration: Duration(milliseconds: 300),
  child: YourWidget(),
)
  • 特点:带动画过渡效果
  • 用途:适合需要渐显/渐隐动画的场景

4. Offstage 组件

Offstage(
  offstage: !condition,
  child: YourWidget(),
)
  • 特点:完全从渲染树中移除
  • 渲染行为:不占用布局空间,不消耗渲染资源
  • 性能:最佳性能选择

5. ConditionalBuilder 模式

condition ? YourWidget() : SizedBox.shrink()
// 或
condition ? YourWidget() : Container()
  • 特点:条件性地创建/销毁组件
  • 性能:最优,完全不渲染隐藏组件

组件差异总结

组件 占用空间 性能 动画支持 用途
Visibility 一般 简单显示/隐藏
Opacity 较好 可选 视觉淡入淡出
AnimatedOpacity 一般 带动画效果
Offstage 最佳 高性能隐藏
ConditionalBuilder 最佳 可选 完全条件渲染

推荐使用场景

  • 频繁切换:使用 OffstageVisibility
  • 需要动画:使用 AnimatedOpacity
  • 静态条件:使用 ConditionalBuilder
  • 保留布局:使用 OpacityVisibilitymaintainSize 选项
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容