美文网首页Flutter
Flutter 常用布局

Flutter 常用布局

作者: 七里田间的守望者 | 来源:发表于2019-10-10 16:30 被阅读0次

行布局 (在X轴上)

Row.mainAxisAlignment 主轴排列方式

Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,  // 改变这个值 可以更改排列方式 如下图
  mainAxisSize: MainAxisSize.max,
  children: [
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 50.0),
], )
row.jpg

Row.crossAxisAlignment 纵轴排列方式

Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  crossAxisAlignment: CrossAxisAlignment.start,  // 改变这个值 可以更改排列方式 如下图
  children: [
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 100.0),
    Icon(Icons.stars, size: 50.0),
], )
image.png

列布局(在Y轴上)

Column.mainAxisAlignment 列布局 主轴排列方式

Column(
  mainAxisAlignment: MainAxisAlignment.start, // 改变这个值 可以更改排列方式 如下图
  mainAxisSize: MainAxisSize.max,
  children: [
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 50.0),
], )
image.png

Column.mainAxisAlignment 列布局 纵轴排列方式

Column(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  crossAxisAlignment: CrossAxisAlignment.start, // 改变这个值 可以更改排列方式 如下图
  children: [
    Icon(Icons.stars, size: 50.0),
    Icon(Icons.stars, size: 100.0),
    Icon(Icons.stars, size: 50.0),
], )
image.png

Stack布局(允许子widget堆叠,可以叠加布局View,也就是在 Z 轴上)

Stack.alignment

Stack(
  alignment: AlignmentDirectional.topStart, //改变这个值 可以更改排列方式 如下面两张图
  children:[
    SizedBox(
      width: 300.0,
      height: 300.0,
      child: Container(color: Colors.green),
), SizedBox(
      width: 200.0,
      height: 200.0,
      child: Container(color: Colors.yellow),
), SizedBox(
      width: 100.0,
      height: 100.0,
      child: Container(color: Colors.red),
), ],
)
image.png
image.png

Positioned布局

Stack允许子widget堆叠,而Positioned可以给子widget定位 根据Stack的四个角

Stack(
  children: [
    SizedBox(
      width: 300.0,
      height: 300.0,
      child: Container(color: Colors.green),
    ),
    Positioned( // 这里的位置都是相对于 上面的SizeBox的位置的
      left: 20.0, 
      top: 20.0,
      width: 100.0,
      height: 100.0,
      child: Container(color: Colors.indigo),
    ),
    Positioned( // 这里的位置都是相对于 上面的SizeBox的位置的
      bottom: 20.0,
      right: 20.0,
      width: 100.0,
      height: 100.0,
      child: Container(color: Colors.black87),
), ],
)
image.png

Expanded布局

Expanded组件可以使Row、Column、Flex等子组件在其主轴方向上展开并填充可用空间(例如,Row在水平方向,Column在垂直方向)。如果多个子组件展开,可用空间会被其flex factor(表示扩展的速度、比例)分割。

Row(
      crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Expanded(
              flex: 1, //组件占据剩余空间的比例
              child: Container(
                color: Colors.yellow,
                child: Center(child: Text('flex: 1'),),
              ),
            ),
            Expanded(
              flex: 2,
              child: Container(
                color: Colors.orange,
                child: Center(child: Text('flex: 2'),),
              ),
            ),
            Expanded(
              flex: 3,
              child: Container(
                color: Colors.cyan,
                child: Center(child: Text('flex: 3'),),
              ),
            )
          ],
        ),
image.png

Expanded + Padding + SizedBox

如何用 paddingSizeBox 给内容之间添加间隙

Container(
        height: 200.0,
        color: Colors.yellow,
        padding: EdgeInsets.all(16.0),
        child: Row(
          children: <Widget>[
            Expanded(
              flex: 1,
              child: Container(
                color: Colors.green,
                child: Center(child: Text('flex: 1'),),
              ),
            ),
            SizedBox(width: 40.0,),
            Expanded(
              flex: 2,
              child: Container(
                color: Colors.orange,
                child: Center(child: Text('flex: 2'),),
              ),
            )
          ],
        ),
      ),
image.png

相关文章

  • Flutter技术分享

    一.布局 Flutter 里面有100多个控件,核心就是一切皆组件。 flutter常用的布局widget有Con...

  • Flutter 布局

    flutter布局 flutter部分分两种,一种是单个子控件的布局一种是多个子控件的布局 常用的单个子控件布局 ...

  • Flutter 基本组件ListlView

    Flutter 列表组件 列表布局是我们项目开发中最常用的一种布局方式。Flutter 中我们可以通过 ListV...

  • Flutter 布局

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

  • Flutter UI - Row、Column / 一行、一列

    Row、Column 是 Flutter 中最常用的这布局 Weight 了。Row = 一行、Column = ...

  • Flutter学习--flutter组件

    记录个人梳理的flutter常用组件 字体 按钮 图片 输入框 Form表单 进度条 线性布局: 弹性布局: 流式...

  • Flutter基础控件篇[2]--布局

    前言 接着Flutter基础控件篇[1],这一篇主要记录Flutter容器控件的使用,也就是常用的布局控件(Lay...

  • Flutter 常用布局

    行布局 (在X轴上) Row.mainAxisAlignment 主轴排列方式 Row.crossAxisAlig...

  • Flutter-布局

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

  • Flutter 容器布局 Container Widget

    Flutter 基础布局 Container Widget Container将会是我们以后最常用的控件之一,Co...

网友评论

    本文标题:Flutter 常用布局

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