Flutter常见布局属性详解。(第二章)

写在前面,先看看 属性如图:。

在这里插入图片描述
建议放大看。

第一个布局

**在这里插入图片描述
代码如下: 我用的比例布局,分为左右!

import 'package:flutter/material.dart';


class One_Top extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return    Container(
      margin: EdgeInsets.all(10),//边距
      child: DecoratedBox(//最外层样式,用盒子画出来
        decoration: BoxDecoration(
          //边框
            gradient: LinearGradient(colors: [
              Colors.lightBlue,
              Colors.lightBlueAccent[700]
            ]),
            //背景渐变
            borderRadius: BorderRadius.circular(20),//边框圆角
            //阴影设置
            boxShadow: [
              BoxShadow(
                //样式
                  color: Colors.black38,
                  offset: Offset(2.0, 2.0),//偏移量
                  blurRadius: 4.0)//模糊的半径
            ]),
        child: Container(
          padding: EdgeInsets.all(10),
          child: Flex(
            //整个横条
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.end,
            direction: Axis.horizontal,
            children: <Widget>[
              Expanded(
                flex: 5,
                child: Row(
                  children: <Widget>[
                    ClipOval(
                      child: Image.network(
                        'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1395765958,3377106680&fm=27&gp=0.jpg',
                        height: 50,
                        width: 50,
                        fit: BoxFit.cover,
                      ),
                    ),
                    Text(
                      '  小杰  ',
                      style: TextStyle(color: Colors.black),
                    ),
                    Icon(
                      Icons.verified_user,
                      color: Colors.green,
                      size: 14,
                    ),
                  ],
                ),
              ),
              Expanded(
                flex: 2,
                child: Row(
                  children: <Widget>[
                    OutlineButton(//带有边框的按钮
                      onPressed: null,
                      child: Text(
                        '开通会员',
                        textAlign: TextAlign.center,
                        style: TextStyle(color: Colors.red),
                      ),
                      color: Colors.blue,
                      borderSide: BorderSide(width: 2),
                      disabledBorderColor: Colors.red,
                    ),
                  ],
                ),
              )
            ],
          ),
        ),
      ),
    );
  }



}

第二个布局:

在这里插入图片描述

import 'package:flutter/material.dart';

class Item_MusicList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
      child: Flex(
        //最外层
        direction: Axis.horizontal, //横向
        crossAxisAlignment: CrossAxisAlignment.start, //设置从头开始
        children: <Widget>[
          Expanded(
            //扩展
            flex: 5,
            child: Container(
                margin: EdgeInsetsDirectional.only(start: 10),
                height: 60,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Row(
                      children: <Widget>[
                        Text(
                          '明天的我们',
                          style: TextStyle(color: Colors.black, fontSize: 16),
                        ),
                        Icon(
                          Icons.music_note,
                          color: Colors.green,
                          size: 15,
                        ),
                      ],
                    ),
                    Row(
                      children: <Widget>[
                        Icon(
                          Icons.check_circle,
                          color: Colors.blue,
                          size: 14,
                        ),
                        Icon(
                          Icons.high_quality,
                          color: Colors.red,
                          size: 14,
                        ),
                        Text(
                          '明天的我们明天的我们-路南',
                          style: TextStyle(color: Colors.black45, fontSize: 14),
                        ),
                      ],
                    )
                  ],
                )),
          ),
          Expanded(
            flex: 1,
            child: Container(
              height: 60,
              child: Column(
                //这个是控制子布局的位置(Row:start-上 end-下 Column:start:左,end-右)
                crossAxisAlignment: CrossAxisAlignment.center,
                //这个是控制子组件从什么位置开始(这个是子布局的轴心位置决定) 比如:放cossAaxisAlignment:end说明在右边,那么右边的Y轴
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[Icon(Icons.play_arrow)],
              ),
            ),
          ),
        ],
      ),
    );
  }
}

第三种布局

在这里插入图片描述
代码:

import 'package:flutter/material.dart';
//电台
class Item_DianTai extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return    Container(
      height: 140,
      padding: EdgeInsets.all(5),
      child: Flex(
        direction: Axis.horizontal,
        children: <Widget>[
          //图片
          Expanded(
              flex: 2,
              child: Stack(
                alignment: AlignmentDirectional.center,
                children: <Widget>[
                  Positioned(
                    child: Image.network(
                      'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=249787448,1681523128&fm=27&gp=0.jpg',
                      fit: BoxFit.cover,
                      height: 140,
                    ),
                  ),
                  Positioned(
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.center,
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          Icon(
                            Icons.play_arrow,
                            size: 40,
                            color: Colors.white,
                          ),
                          Text(
                            '个性电台',
                            style: TextStyle(color: Colors.white),
                          )
                        ],
                      )),
                ],
              )),
          Expanded(
            //右边
            flex: 4,
            child: Container(
              child: Column(
                //上下
                children: <Widget>[
                  Container(
                    //上
                    color: Colors.white70,
                    margin: EdgeInsets.all(1),
                    padding: EdgeInsets.only(left: 10),
                    child: Flex(
                      direction: Axis.horizontal,
                      children: <Widget>[
                        Expanded(
                            flex: 3,
                            child: Column(
                              mainAxisAlignment:
                              MainAxisAlignment.center,
                              crossAxisAlignment:
                              CrossAxisAlignment.start,
                              children: <Widget>[
                                Text(
                                  '新歌新碟',
                                  style: TextStyle(
                                      fontWeight: FontWeight.w400,
                                      fontSize: 18),
                                ),
                                Text(
                                  '“元气少年”,不期而遇',
                                  style:
                                  TextStyle(color: Colors.black38),
                                ),
                              ],
                            )),
                        Expanded(
                            flex: 1,
                            child: Image.network(
                              'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556614721495&di=71950285f5c1364e908b2ade5549746c&imgtype=0&src=http%3A%2F%2Fimglf1.ph.126.net%2FpugDzv2Jd-tn3FAyTitYiw%3D%3D%2F16325548666908388.jpg',
                              fit: BoxFit.cover,
                              height: 62,
                            )),
                      ],
                    ),
                  ),
                  Container(
                    //下
                    color: Colors.white70,

                    margin: EdgeInsets.all(2),
                    padding: EdgeInsets.only(left: 10),
                    child: Flex(
                      direction: Axis.horizontal,
                      children: <Widget>[
                        Expanded(
                            flex: 3,
                            child: Column(
                              mainAxisAlignment:
                              MainAxisAlignment.center,
                              crossAxisAlignment:
                              CrossAxisAlignment.start,
                              children: <Widget>[
                                Text(
                                  '新歌新碟',
                                  style: TextStyle(
                                      fontWeight: FontWeight.w400,
                                      fontSize: 18),
                                ),
                                Text(
                                  '“元气少年”,不期而遇',
                                  style:
                                  TextStyle(color: Colors.black38),
                                ),
                              ],
                            )),
                        Expanded(
                            flex: 1,
                            child: Image.network(
                              'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556614721495&di=71950285f5c1364e908b2ade5549746c&imgtype=0&src=http%3A%2F%2Fimglf1.ph.126.net%2FpugDzv2Jd-tn3FAyTitYiw%3D%3D%2F16325548666908388.jpg',
                              fit: BoxFit.cover,
                              height: 62,
                            )),
                      ],
                    ),
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }

}

第四种布局:

在这里插入图片描述

import 'package:flutter/material.dart';

class ItemSquare extends StatelessWidget {
  var img_url;
  var number;

  ItemSquare(String img_url, String number) {
    this.img_url = img_url;
    this.number = number;
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
      padding: EdgeInsets.all(2),
      width: 100,
      height: 100,
      child: Stack(
        alignment: Alignment.center, //指定未定位或部分定位widget的对齐方式
        children: <Widget>[
          Stack(
            //叠加布局
            children: <Widget>[
              Positioned(
                //定位
                child: new ClipRect(
                    child: Image.network(
                  '$img_url',
                  fit: BoxFit.cover,
                  height: 130,
                  width: 130,
                )),
//                  child: Image.network(
//                '$img_url',
//                fit: BoxFit.fitHeight,
//              )
              ),
              Positioned(
                bottom: 5,
                left: 2,
                child: Row(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    Icon(
                      Icons.headset,
                      size: 14,
                      color: Colors.white,
                    ),
                    Text(
                      '$number',
                      style: TextStyle(
                        color: Colors.white,
                      ),
                    ),
                  ],
                ),
              ),
              Positioned(
                right: 5,
                bottom: 5,
                child: Icon(
                  Icons.play_circle_outline,
                  color: Colors.white,
                  size: 25,
                ),
              )
            ],
          )

        ],
      ),
    );
  }
}

第五种布局

在这里插入图片描述

 import 'package:flutter/material.dart';
//三个子列表的item
class Item_GeDan extends StatelessWidget {
  var image;
  var titlename;
  var author;
  Item_GeDan(String image, String titlename, String author) {
    this.image = image;
    this.titlename = titlename;
    this.author = author;
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
      margin: EdgeInsets.all(5),
      //比例布局
      child: Flex(
        direction: Axis.horizontal,
        children: <Widget>[
          //左边图片
          Expanded(
              flex: 3,
              child: Stack(
                overflow: Overflow.clip,
                children: <Widget>[
                  Positioned(
                    child: Container(
                        width: 140,
                        height: 140,
                        child: Image.network(
                          '$image',
                          fit: BoxFit.cover,
                        )),
                  ),
                  Positioned(
                      right: 10,
                      bottom: 10,
                      child: Icon(
                        Icons.play_circle_outline,
                        color: Colors.white,
                      )),
                ],
              )),
          //右边数据
          Expanded(
            flex: 5,
            child: Column(
              textDirection: TextDirection.ltr,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                DecoratedBox(
                    //装饰器盒子
                    decoration: BoxDecoration(
                      //装饰器类型
                      border: Border.all(
                          //边框设置
                          color: Colors.black54),
                    ),
                    child: Padding(
                      padding: EdgeInsets.symmetric(vertical: 2, horizontal: 4),
                      child: Text(
                        "歌单",
                        style: TextStyle(color: Colors.black26),
                      ),
                    )),
                Text('$titlename',
                    style: TextStyle(color: Colors.black, fontSize: 18)),
                Text(
                  '$author',
                  style: TextStyle(color: Colors.black54, fontSize: 14),
                ),
                Row(
                  children: <Widget>[
                    Icon(
                      Icons.headset,
                      color: Colors.black54,
                      size: 14,
                    ),
                    Text('123万'),
                  ],
                )
              ],
            ),
          )
        ],
      ),
    );
  }
}

第六种

在这里插入图片描述

代码如下:

import 'package:flutter/material.dart';
class Item_Type extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return     Container(
      margin: EdgeInsets.all(5),
      padding: EdgeInsets.all(5),
      child: DecoratedBox(
          decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.all(Radius.circular(10)),
              boxShadow: [
                //阴影
                BoxShadow(offset: Offset(2.0, 2.0), blurRadius: 10)
              ]),
          child: Padding(
            padding: EdgeInsets.all(10),
            child: Flex(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              direction: Axis.horizontal,
              children: <Widget>[
                Expanded(
                    flex: 1,
                    child: Column(
                      children: <Widget>[
                        Icon(Icons.account_circle, color: Colors.green),
                        Text('歌手')
                      ],
                    )),
                Expanded(
                  flex: 1,
                  child: Column(
                    children: <Widget>[
                      Icon(Icons.equalizer, color: Colors.green),
                      Text('排行')
                    ],
                  ),
                ),
                Expanded(
                  flex: 1,
                  child: Column(
                    children: <Widget>[
                      Icon(Icons.dashboard, color: Colors.green),
                      Text('分类歌单')
                    ],
                  ),
                ),
                Expanded(
                  flex: 1,
                  child: Column(
                    children: <Widget>[
                      Icon(Icons.nature, color: Colors.green),
                      Text('电台')
                    ],
                  ),
                ),
                Expanded(
                  flex: 1,
                  child: Column(
                    children: <Widget>[
                      Icon(Icons.account_circle, color: Colors.green),
                      Text('一起听')
                    ],
                  ),
                ),
              ],
            ),
          )),
    );
  }

}

。。。更多的 等遇到了 再继续添加吧!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值