美文网首页
flutter布局

flutter布局

作者: wrootlflvl | 来源:发表于2019-06-13 20:01 被阅读0次

横排和竖排

class RowAndColumDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Row( // 横排 Colum为竖排
        /* 主轴对齐方式
        * start:头部对其
        * end:尾部对其
        * center:居中对齐
        * spaceAround:空间分配到子部件周围
        * spaceBetween:空间分配到子部件之间
        * spaceEvenly:空间平均分配在子部件之间
        * */
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        /* 交叉轴对其方式
        * start:头部对其
        * end:尾部对其
        * center:居中对齐
        * stretch:拉伸对齐
        * */
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          IconBadge(Icons.subway),
          IconBadge(Icons.airplanemode_active),
          IconBadge(Icons.directions_bike),
        ],
      ),
    );
  }
}

class IconBadge extends StatelessWidget {
  final IconData icon;
  final double size;

  IconBadge(this.icon, {
    this.size = 30.0
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Icon(icon, size: size, color: Colors.white,),
      width: size + 60,
      height: size + 60,
      color: Colors.redAccent,
    );
  }
}

固定尺寸的盒子和对齐方式

class SizedBoxDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          SizedBox( // 可以强制设置大小,如果不设置就是包装的子控件大小
            width: 200.0,
            height: 400.0,
            child: Container(
              /* 设置子控件对齐方式
              * x轴 -1.0在左边,0.0在中心位置,1.0在右边
              * y轴 -1.0在顶部,0.0在中心位置,1.0在底部
              * Alignment.topLeft/topCenter/topRight/center/centerLeft/centerRight/bottomLeft/bottomCenter/bottomRight
              * */
              alignment: Alignment(0.5, -0.6),
              decoration: BoxDecoration(
                color: Colors.indigoAccent,
                borderRadius: BorderRadius.circular(10.0),
              ),
              child: Icon(Icons.ac_unit, color: Colors.white, size: 40.0,),
            ),
          ),
          SizedBox(height: 30.0,),
          SizedBox(
            width: 100.0,
            height: 100.0,
            child: Container(
              decoration: BoxDecoration(
                color: Colors.indigoAccent,
                borderRadius: BorderRadius.circular(10.0),
              ),
              child: Icon(Icons.brightness_2, color: Colors.white, size: 40.0,),
            ),
          ),
        ],
      ),
    );
  }
}

Stack放置一摞小部件

class Stack Demo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Stack( // Stack里面可以添加一摞小部件,这些小部件会叠加到一起,Stack会以它里面最大的部件为底板
            alignment: Alignment.topLeft,
            children: <Widget>[
              SizedBox(
                width: 250.0,
                height: 400.0,
                child: Container(
                  decoration: BoxDecoration(
                    color: Color.fromRGBO(3, 54, 255, 1.0),
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                ),
              ),
              Positioned( // Stack里面的小部件可以相对于底板设置相应的位置
                top: 20,
                left: 20,
                child: Icon(Icons.brightness_2, color: Colors.white, size: 50,),
              ),
              Positioned(
                right: 20.0,
                top: 20.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 15.0,),
              ),
              Positioned(
                right: 60.0,
                top: 80.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 20.0,),
              ),
              Positioned(
                right: 20.0,
                top: 150.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 25.0,),
              ),
              Positioned(
                right: 100.0,
                top: 220.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 22.0,),
              ),
              Positioned(
                right: 50.0,
                top: 280.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 35.0,),
              ),
              Positioned(
                right: 120.0,
                top: 350.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 25.0,),
              ),
              Positioned(
                right: 10.0,
                top: 380.0,
                child: Icon(Icons.ac_unit, color: Colors.white, size: 20.0,),
              ),
            ],
          ),
        ],
    );
  }
}

AspectRatio设置宽高比

class AspectRatioDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 可以设置子部件的宽高比例,它会使用子部件的宽度,根据设置的宽高比去调整高度
        AspectRatio(
          aspectRatio: 3/2, // 设置宽高比
          child: Container(color: Colors.redAccent,),
        )
      ],
    );
  }
}

ConstrainedBox带限制的盒子

class ConstrainedBox Demo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ConstrainedBox( // 可以设置宽度和高度的最大最小值
          constraints: BoxConstraints(
            minHeight: 150.0,
            maxWidth: 300.0,
          ),
          child: Container(color: Colors.indigoAccent,),
        ),
      ],
    );
  }
}

相关文章

  • Flutter 布局

    Flutter 布局详解 Flutter 布局(一)- Container详解 Flutter 布局(二)- Pa...

  • Flutter-布局

    一、介绍 flutter布局需要先了解flutter所有布局的widget,首先flutter布局分为Contai...

  • Flutter-汇总

    Flutter(一)--Flutter安装遇到的问题汇总 Flutter(二)--布局机制、布局步骤、水平和垂直布...

  • Flutter旋转位移等操作

    flutter布局-5-Matrix4矩阵变换Flutter 布局(六)- SizedOverflowBox、Tr...

  • flutter布局-3-center

    Center 居中的布局 连载:flutter布局-1-column连载:flutter布局-2-row 只能有一...

  • Flutter及Dart入门

    目录 Dart语言下的Flutter Flutter Widget Flutter 布局 Flutter 页面 路...

  • flutter(六,页面布局篇)

    Tags: flutter Flutter页面布局篇 [TOC] 1. 布局及装饰组件说明 2. 基础布局处理 2...

  • 2019-04-15 Flutter 布局方式

    1:Flutter 的 布局 1.1概述: 1.2总体 flutter 中的布局 是以原子布局实体为填充物,根据行...

  • flutter布局-4-container

    Container 容器 连载:flutter布局-1-column连载:flutter布局-2-row连载:fl...

  • flutter Cannot provide both a co

    flutter布局错误'package:flutter/src/widgets/container .dart' ...

网友评论

      本文标题:flutter布局

      本文链接:https://www.haomeiwen.com/subject/miasfctx.html