Flutter-offStage

介绍:
作用很简单,通过offsatge字段控制child是否显示,比较常用的控件;

布局行为:
offstage的布局行为完全取决于offstate参数,offstage默认为true,不显示;

  • 当offstage为true,child不会绘制到屏幕上,不会响应点击事件,也不会占用空间;
  • 当offstage为false,child绘制到屏幕上;
    注意,当offstage不可见,如果child有动画,应该手动停止动画,offstage不会停止动画;

继承关系

Object > Diagnosticable > DiagnosticableTree > Widget > RenderObjectWidget > SingleChildRenderObjectWidget > Offstage

构造函数

Offstage({Key key, bool offstage: true, Widget child })

常用属性:

  • offstage → bool

    控制child显示隐藏;

  • child → Widget

    子child;

示例代码:

class MyOffStage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return MyOffStageState();
  }
}

class MyOffStageState extends State<MyOffStage> {
  bool _offStage;


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.black,
        centerTitle: true,
        title: Text('OffStage'),
      ),
      body: Container(
        color: Colors.white,
        child: Column(
          children: <Widget>[
            _firstWidget(),
            _secondWidget()
          ],
        ),
      ),
    );
  }

  _firstWidget() {
    return FlatButton(
      onPressed: () {
        setState(() {
         _offStage = !_offStage;
        });

      },
      child: Text('$_offStage'),
      color: Colors.green,
    );
  }

  _secondWidget(){

    return Offstage(offstage: _offStage,child: Container(
      width: 50.0,
      height: 50.0,
      color: Colors.blueAccent,
    ),);

  }


}

如果offstage为true,child自身的最小最大宽度返回0.0;而且也不会绘制child,也不会加载到内存中;offstage并不是通过插入或者删除widget tree的节点来实现显示隐藏效果,而是通过自身尺寸,不响应hitTest以及不绘制,来达到展示与隐藏的效果;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容