flutter-可选元素的显示或隐藏Offstage
2019-09-24 本文已影响0人
秋分落叶
布局行为:
offstage的布局行为完全取决于offstate参数,offstage默认为true,不显示;
当offstage为true,child不会绘制到屏幕上,不会响应点击事件,也不会占用空间;
当offstage为false,child绘制到屏幕上;
注意,当offstage不可见,如果child有动画,应该手动停止动画,offstage不会停止动画;
示例代码:
Widget _createTips(String image, String title, {String subTitle}) {
return InkWell(
child: Column(
children: <Widget>[
Image.asset(ImageUtil.mineAssets(image), width: 50, height: 41),
SizedBox(height: 5),
ICYText(title, fontSize: 12, color: Color(0xFF7474DC)),
SizedBox(height: 5),
Offstage(
offstage: subTitle != null ? false : true,
child: ICYText(subTitle ?? '',
fontSize: 12, color: Color(0xFFE3AC5E)))
],
),
);
}
}
如果offstage为true,child自身的最小最大宽度返回0.0;而且也不会绘制child,也不会加载到内存中;offstage并不是通过插入或者删除widget tree的节点来实现显示隐藏效果,而是通过自身尺寸,不响应hitTest以及不绘制,来达到展示与隐藏的效果;