首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Flutter 相对布局之Stack

Flutter 相对布局之Stack

作者头像
yechaoa
发布2022-06-10 14:20:22
发布2022-06-10 14:20:22
1K0
举报
文章被收录于专栏:移动开发专栏移动开发专栏

效果

简介

相对布局,类似于android中的RelativeLayoutFrameLayout。 既可以相对父容器确定自己的位置,也可以多个widget重叠显示。 StackPositioned搭配使用。

源码

Stack

代码语言:javascript
复制
  Stack({
    Key key,
    this.alignment = AlignmentDirectional.topStart,
    this.textDirection,
    this.fit = StackFit.loose,
    this.overflow = Overflow.clip,
    List<Widget> children = const <Widget>[],
  }) 
  • alignment :对齐方式,即没有位置定位的widget的对齐方式,当只有横向定位时,比如left有实参,则影响其纵向的对齐方式,再如子widget的top有值,即纵向定位有效,则影响其横向的对齐方式。
  • fit:没有定位的子widget的大小,默认StackFit.loose,使用子widget的大小,StackFit.expand则填充stack
  • overflow :超出stack的显示方式,默认Overflow.clip裁剪,Overflow.visible超出也显示。

Positioned

代码语言:javascript
复制
  const Positioned({
    Key key,
    this.left,
    this.top,
    this.right,
    this.bottom,
    this.width,
    this.height,
    @required Widget child,
  }) 
  • 主要用到lefttoprightbottom四个参数来定位。

示例

如效果图所示,一个简单的登录界面,顶部的logo和底部的登录button是重叠显示在中间Card之上的。 所以我们大概结构就是一个Stack下有3个child,一个未定位的Card,和两个定位的Positioned

代码语言:javascript
复制
        Stack(alignment: Alignment.topCenter, children: <Widget>[
          Container(
            margin: EdgeInsets.only(top: 50),
            padding: EdgeInsets.all(40),
            child: Card(
              ...
            ),
          ),
          Positioned(
            top: 40,
            left: MediaQuery.of(context).size.width / 2 - 35,
            child: Center(
              ...
            ),
          ),
          Positioned(
            bottom: 20,
            left: 130,
            right: 130,
            ...
          ),
        ]),
  • 第一个就是Container,包裹住Card,主要是内填充和外填充。
  • 第二个就是logo,主要是左边位置是屏幕的一半减去自身的一半。
  • 第三个就是底部登录button了。

具体位置显示还要根据自己需求调试。

Github

https://github.com/yechaoa/wanandroid_flutter

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 效果
  • 简介
  • 源码
    • Stack
    • Positioned
  • 示例
  • Github
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档