Flutter 控件系列教程之GridTile

作者 : 开心源码 本文共1519个字,预计阅读时间需要4分钟 发布时间: 2022-05-13 共272人阅读
titledescriptiontype
GridTileGridTile详情及使用案例widget

GridTile

继承关系
Object>Diagnosticable>DiagnosticableTree>Widget>StatelessWidget>GridTile

基本用法

GridTile(        header: Container(          color: Color(0x22000000),          height: 50,          child: Text(            'header',            style: TextStyle(color: Colors.redAccent),          ),        ),        child: Container(          color: Color(0x22119233),          height: 50,          child: Column(            mainAxisAlignment: MainAxisAlignment.spaceBetween,            children: <Widget>[              Text(                'start',                textAlign: TextAlign.center,                style: TextStyle(color: Colors.redAccent),              ),              Text(                'end',                textAlign: TextAlign.center,                style: TextStyle(color: Colors.redAccent),              ),            ],          ),        ),        footer: Container(          color: Color(0x22000000),          height: 50,          child: Text(            'footer',            style: TextStyle(color: Colors.redAccent),          ),        ),      )
  • Color 0x22 透明解决,为了能看究竟层被覆盖内容。
  • MainAxisAlignment.spaceBetween 将两个text撑到上下两边

属性详情

  • header 页眉,头部Widget,
  • child 子Widget,必须实现
  • footer 页脚,底部Widget

效果图

切面效果图

特点

通过代码和图可以看到GridTile有如下几个特点:

  • 页眉、页脚在视图顶层,覆盖在child之上
  • child组件高度设置无效,这个源码里可以看到起因
  • 继承自StatelessWidget,一旦创立,不可变。

源码分析

 @override  Widget build(BuildContext context) {    if (header == null && footer == null)      return child;    return Stack(      children: <Widget>[        Positioned.fill(          child: child,        ),        if (header != null)          Positioned(            top: 0.0,            left: 0.0,            right: 0.0,            child: header,          ),        if (footer != null)          Positioned(            left: 0.0,            bottom: 0.0,            right: 0.0,            child: footer,          ),      ],    );  }
  • Stack 创立一个堆结构视图
  • header 、footer都为null时直接返回child
  • Positioned.fill 让child充满父组件
  • Positioned(top: 0.0,left: 0.0,right: 0.0,child: header,) header放顶部显示
  • Positioned(left: 0.0,bottom: 0.0,right: 0.0,child: footer,) footer放底部显示

总结

GridTile适合做带有页眉页脚的页面样式,但有一点child 顶部和底部会被页眉页脚覆盖,用的时候需要注意。

作者:i校长
博客地址:Flutter 控件系列教程之GridTile
网站:jetpack
Github: ibaozi-cn

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Flutter 控件系列教程之GridTile

发表回复