前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter Stack 组件

Flutter Stack 组件

作者头像
赵哥窟
发布2019-09-25 15:35:35
9680
发布2019-09-25 15:35:35
举报
文章被收录于专栏:日常技术分享日常技术分享
Stack

Stack 这个是Flutter中布局用到的组件,可以叠加的显示View。

代码语言: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的对其方式,默认情况是以左上角为开始点 。

fit :用来决定没有Positioned方式时候子Widget的大小,StackFit.loose 指的是子Widget 多大就多大,StackFit.expand使子Widget的大小和父组件一样大

overflow :指子Widget 超出Stack时候如何显示,默认值是Overflow.clip,子Widget超出Stack会被截断,

Overflow.visible超出部分还会显示的

代码语言:javascript
复制
import 'package:flutter/material.dart';

class StackPage extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Stack Demo'),
        backgroundColor: Colors.blue[400],
      ),
      body: Stack(
        children: <Widget>[
          Container(
            width: 200,
            height: 200,
            color: Colors.red,
          ),
          Container(
            width: 160,
            height: 160,
            color: Colors.blue,
          ),
          Container(
            width: 120,
            height:120,
            color: Colors.green,
          ),
        ],
      ),
    );
  }
}

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.26.19.png

fit 属性使用

如果指定是StackFit.expand,所有的子组件会和Stack一样大的

代码语言:javascript
复制
 body: Stack(
        fit: StackFit.expand,
        children: <Widget>[
          Container(
            width: 200,
            height: 200,
            color: Colors.red,
          ),
          Container(
            width: 160,
            height: 160,
            color: Colors.blue,
          ),
          Container(
            width: 120,
            height:120,
            color: Colors.green,
          ),
        ],
      ),

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.28.35.png

显示内容就只最后一个组件,虽然我们给这个组件指定了一个120*120的宽高是不会 生效的,因为我们已经指定了子元素和Stack一样大小,也就是说设置了StackFit.expand,StackFit.expand的效果优先

AlignmentDirectional.bottomEnd 对齐方式

所有的Widget 以Stack的右下角为起点开始对齐

代码语言:javascript
复制
  body: Stack(
//        fit: StackFit.expand,
        alignment: AlignmentDirectional.bottomEnd,
        children: <Widget>[
          Container(
            width: 200,
            height: 200,
            color: Colors.red,
          ),
          Container(
            width: 160,
            height: 160,
            color: Colors.blue,
          ),
          Container(
            width: 120,
            height:120,
            color: Colors.green,
          ),
        ],
      ),

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.30.58.png

AlignmentDirectional.topEnd 对齐方式

所有的Widget 以Stack的右上角为起点开始对齐

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.32.08.png

AlignmentDirectional.center 对齐方式

所有的Widget 以Stack的中心位置

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.32.42.png

AlignmentDirectional.centerEnd 对齐方式

所有的Widget 在Stack的中心位置并且右边跟stack右边挨着

Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-24 at 16.33.52.png

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Stack
  • fit 属性使用
  • AlignmentDirectional.bottomEnd 对齐方式
  • AlignmentDirectional.topEnd 对齐方式
  • AlignmentDirectional.center 对齐方式
  • AlignmentDirectional.centerEnd 对齐方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档