Wrap Widget

作者: imuzi | 来源:发表于2019-01-10 17:31 被阅读4次

某些时候在显示行或者列时,由于宽度或者高度超过了屏幕,多余的部分无法显示,并且还会报出错误.
使用Wrap来替代Row或者Column,就可以自适应的进行新增行或者列来进行显示.还可以设置对齐方式alignment,runAlignment;间距spacing,runspacing等.

import 'package:flutter/material.dart';

class GoogleWarp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Row(
          children: <Widget>[
            Container(
              color: Colors.blue,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.orange,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.blueGrey,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.red,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.green,
              height: 50.0,
              width: 100.0,
            ),
          ],
        ),
        SizedBox(
          height: 10.0,
        ),
        Divider(height: 1.0, color: Colors.red,),
        SizedBox(
          height: 10.0,
        ),
        Wrap(
          alignment: WrapAlignment.center,
          spacing: 10.0,
          runSpacing: 20.0,
          runAlignment: WrapAlignment.start,
          children: <Widget>[
            Container(
              color: Colors.blue,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.orange,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.blueGrey,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.red,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.green,
              height: 50.0,
              width: 100.0,
            ),
          ],
        ),
        SizedBox(
          height: 10.0,
        ),
        Divider(height: 1.0, color: Colors.red,),
        SizedBox(
          height: 10.0,
        ),
        Wrap(
          alignment: WrapAlignment.spaceAround,
          spacing: 10.0,
          direction: Axis.vertical,
          runSpacing: 20.0,
          runAlignment: WrapAlignment.start,
          children: <Widget>[
            Container(
              color: Colors.blue,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.orange,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.blueGrey,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.red,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.green,
              height: 50.0,
              width: 100.0,
            ),
          ],
        ),
        SizedBox(
          height: 10.0,
        ),
        Divider(height: 1.0, color: Colors.red,),
        SizedBox(
          height: 10.0,
        ),
        Wrap(
          spacing: 10.0,
          runSpacing: 20.0,
          textDirection: TextDirection.rtl,
          verticalDirection: VerticalDirection.up,
          children: <Widget>[
            Container(
              color: Colors.blue,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.orange,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.blueGrey,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.red,
              height: 50.0,
              width: 100.0,
            ),
            Container(
              color: Colors.green,
              height: 50.0,
              width: 100.0,
            ),
          ],
        )
      ],
    );
  }
}

基本属性

  • alignment 主轴对齐
  • crossAixsAligment 横轴对齐
  • direction 子控件排序方向,垂直或者水平
  • runAligment 横轴显示方向
  • runSpacing 垂直间距
  • spacing 横向间距
  • textDirection 横向顺序,从左到右,从右到左
  • vericalDirection 垂直顺序

我的博客

相关文章

  • Wrap Widget

    某些时候在显示行或者列时,由于宽度或者高度超过了屏幕,多余的部分无法显示,并且还会报出错误.使用Wrap来替代Ro...

  • Flutter 常用 Widget 介绍

    级别:★☆☆☆☆标签:「Flutter 常用 Widget」「SafeArea」「Expanded」「Wrap」「...

  • Flutter Widget 003: Wrap

    1.概要 我们使用Row和Column的时候,如果子Widget不多的时候,是可以正常显示的: 但是,当Widge...

  • flutter 动手篇3 - 流式布局

    流式布局 Wrap 在介绍Row和Colum时,如果子widget超出屏幕范围,则会报溢出错误,如: 运行: 可以...

  • 004.2 flutter中的Wrap widget

    功能 Row 和 column 很简单,很好使image.png 但有时候超出边界怎么办?image.png Wr...

  • flutter 流式布局Wrap、Flow

    流式布局 Wrap 在介绍Row和Colum时,如果子widget超出屏幕范围,则会报溢出错误,如: 可以看到,右...

  • 3.2 布局类Widget-流式布局Wrap和Flow

    原文在此,这里只为学习 流式布局Wrap 在介绍Row和Colum时,如果子widget超出屏幕范围,则会报溢出错...

  • Flutter: Flow 九宫格

    Flow需要自己实现子widget的位置转换,在很多场景下首先要考虑的是Wrap是否满足需求。Flow主要用于一些...

  • WEB-02-flex容器

    容器: 1、flex-wrap:wrap | nowrap | wrap-reverse 2、flex-d...

  • 如何设置元素的百分比宽度

    和flex-wrap: wrap;搭配使用

网友评论

    本文标题:Wrap Widget

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