1. if 判断
if(!_hidden) Container( color: Colors.deepOrangeAccent, child: TestWidget(msg: 'if 判断',), )现实结果,不会占位,潜伏时TestWidget不会加载,可else一个占位(则会加载占位的组件)
2. Opacity
Container( color: Colors.red, child: Opacity( opacity: _hidden?0:1,//会占位高度 child: TestWidget(msg: 'Opacity',), ), ),现实结果,会占位,显示潜伏TestWidget都会加载
2. Offstage
Container( color: Colors.grey, child: Offstage( offstage: _hidden,///无占位高度 child: TestWidget(msg: 'Offstage',), ), ),现实结果,不会占位,显示潜伏TestWidget都会加载
3. Visibility
Container( color: Colors.cyanAccent, child: Visibility( maintainAnimation: true, maintainState: true, maintainSize: true,//潜伏须要占位,前俩个也须要为true,内部断言会判断,不须要时都为false,maintainState影响是否加载 child: TestWidget(msg: 'Visibility',), visible: _hidden ), ),现实结果,可选择是否占位,不占位,潜伏时TestWidget不会加载,占位,显示潜伏TestWidget都会加载
测试:
Visibility选择占位时,潜伏TestWidget
Visibility选择占位时,显示TestWidget
Visibility选择不占位时,潜伏TestWidget
Visibility选择不占位时,显示TestWidget
怎么选择看本身需求了。 |