在Android中,使用visibility属性控制View是否显示。
同样地,Flutter也使用Visibility来控制Widget是否显示。
同时也可以使用Offstage或Opacity来控制。
Visibility
Visibility(
visible: true,
/// 隐藏时是否保持占位
maintainState: false,
/// 隐藏时是否保存动态状态
maintainAnimation: false,
/// 隐藏时是否保存子组件所占空间的大小,不会消耗过多的性能
maintainSize: false,
child: Text("显示"),
),
使用visible
来控制子组件显示或隐藏。
Visibility
最灵活,还同时提供了3个属性maintainState
、maintainAnimation
、maintainSize
。
这三个属性有相互依赖.
以下是部分源码,
如果随便设置3个值,可能会报异常。
assert(
maintainState == true || maintainAnimation == false,
'Cannot maintain animations if the state is not also maintained.',
),
assert(
maintainAnimation == true || maintainSize == false,
'Cannot maintain size if animations are not maintained.',
),
assert(
maintainSize == true || maintainSemantics == false,
'Cannot maintain semantics if size is not maintained.',
),
assert(
maintainSize == true || maintainInteractivity == false,
'Cannot maintain interactivity if size is not maintained.',
);
Offstage
//能控件隐藏或显示,但是隐藏时不会占位。
Offstage(
offstage: true,
child: Text("显示"),
),
Opacity
///0表示完全透明,也相当于隐藏
///1代表完全不透明,相当于完全显示
Opacity(
opacity: 0,
child: Text("隐藏"),
),