美文网首页
flutter 布局

flutter 布局

作者: CaptainRoy | 来源:发表于2019-10-14 19:59 被阅读0次
Container (只有一个子 Widget。默认充满,包含了padding、margin、color、宽高、decoration 等配置)
Container
Container(
      margin: EdgeInsets.all(10.0), // 距离四周10.0
      height: 120.0,
      width: 500.0,
      // 透明黑色遮照
      decoration: BoxDecoration(
        // 弧度 4.0
        borderRadius: BorderRadius.all(Radius.circular(4.0)),
        // 设置颜色
        color: Colors.black,
        // 边框
        border: Border.all(color: Colors.red,width: 3.0),
      ),
      child: Text("测一下"),
    );
Column / Row
//主轴方向,Column的竖向、Row我的横向
mainAxisAlignment: MainAxisAlignment.start, 
//默认是最大充满、还是根据child显示最小大小
mainAxisSize: MainAxisSize.max,
//副轴方向,Column的横向、Row我的竖向
crossAxisAlignment :CrossAxisAlignment.center,
Expanded 充满
  • 例子


import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        backgroundColor: Colors.grey,
        appBar: AppBar(
          title: Text("FlutterDemo"),
        ),
        body: HomePageWidget(),
      ),
    );
  }
}

class HomePageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return ListView.builder(
      itemBuilder: (context,index) {
        return RowWidget();
      },
      itemCount: 20,
    );
  }
}

class RowWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    return Container(
      child: Card(
        child: Padding(
          padding: EdgeInsets.only(left: 10.0,top: 10.0,right: 10.0,bottom: 10.0),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Container(
                margin: EdgeInsets.only(top: 10.0,bottom: 10.0),
                alignment: Alignment.topLeft,
                child: Text(
                  "这是一段描述",
                  style: TextStyle(color: Colors.black54,fontSize: 14.0),
                  maxLines: 3,overflow: TextOverflow.ellipsis,
                ),
              ),
              Padding(padding: EdgeInsets.all(10.0),),
              Row(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  BootmItemWidget(icon: Icons.star,text: "1000",),
                  BootmItemWidget(icon: Icons.link,text: "1000",),
                  BootmItemWidget(icon: Icons.subject,text: "1000",),
                ],
              ),
            ],
          ),
        ),
      ),
    );

//    return Container(
//      color: Colors.white,
//      margin: EdgeInsets.all(5.0),
//      child: Column(
//        mainAxisAlignment: MainAxisAlignment.start,
//        mainAxisSize: MainAxisSize.max,
//        children: <Widget>[
//          Text("这是一段描述",style: TextStyle(color: Colors.black54,fontSize: 14.0),maxLines: 3,overflow: TextOverflow.ellipsis,),
//          Padding(padding: EdgeInsets.only(bottom: 5.0),),
//
//          Row(
//            crossAxisAlignment: CrossAxisAlignment.start,
//            children: <Widget>[
//              BootmItemWidget(icon: Icons.star,text: "1000",),
//              BootmItemWidget(icon: Icons.link,text: "1000",),
//              BootmItemWidget(icon: Icons.subject,text: "1000",),
//            ],
//          ),
//        ],
//      ),
//    );
  }
}

// 底部按钮
class BootmItemWidget extends StatelessWidget {

  final IconData icon;
  final String text;

  BootmItemWidget({Key key,this.icon,this.text}) : super(key:key);

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Expanded(
      flex: 1,
      // 居中显示
      child: Center(
        //横向布局
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          mainAxisSize: MainAxisSize.max,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Icon(icon,size: 16.0,color: Colors.grey,),
            // 间隔
            Padding(padding: EdgeInsets.only(left: 5.0)),
            Text(
              text,
              style: TextStyle(color: Colors.grey,fontSize: 14.0),
              // 多余的。。。。显示
              overflow: TextOverflow.ellipsis,
              maxLines: 1,
            ),
          ],
        ),
      ),
    );
  }
}

相关文章

  • 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/mlcdmctx.html