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以及不绘制,来达到展示与隐藏的效果;

上一篇下一篇

猜你喜欢

热点阅读