• flutter学习----布局


    Flutter 布局

    ListView 列表

    名称 类型 说明
    scrollDirection Axis Axis.horizontal、Axis.vertical
    padding EdgeInsetsGeometry 内边距
    resolve bool 组件反向排序
    children List 列表元素

    动态列表

    ListView.builder( itemCount:this.list.length, 		itemBuilder:(context,index){ 
          returnListTile( leading:Icon(Icons.phone), 	      	  title:Text("${list[index]}"), 
          ); 
    },
    );
    

    ListTitle

    示例:

    ListTile( 
        leading:Icon(Icons.phone), 		              title:Text("ListTitle",style:TextStyle(fontSize:28.0),
        ), 
        subtitle:Text('subTitle'), 
        trailing:Icon(Icons.phone),
    ),
    

    GridView 网格

    名称 类型 说明
    scrollDirectioin Axis 滚动方向
    padding EdgeInsetsGeometry 内边距
    resolve bool 组件反向排序
    crossAxisSpacing double 水平间距
    mainAxisSpacing double 垂直间距
    crossAxisCount int 一行的数量
    childAspectRatio double 子Widge宽高比
    children []

    GridView.count

    class LayoutContent extends StatelessWidget{
    List<Widget>_getListData(){ vartempList=listData.map((value){ 
        returnContainer( 
            child: Column( 
                children:<Widget>[ 				     Image.network(value["imageUrl"]),  SizedBox(height:12), 
     Text(value["title"],
     textAlign:TextAlign.center,
     style:TextStyle(fontSize:20)), 
      ], 
      ), 
            decoration:BoxDecoration( 
                border:Border.all( 			color:Color.fromRGBO(230,230,230,0.9), 
      1.0 ) ),
    );
    });  
    return tempList.toList();
    }
    @override Widgetbuild(BuildContextcontext){ 
        returnGridView.count( padding:EdgeInsets.all(20), crossAxisCount:2, crossAxisSpacing:20, mainAxisSpacing:20, //childAspectRatio:0.7, children:this._getListData(), ); }
    
    

    GridView.builder

    class LayoutContent extends StatelessWidget{
    Widget_getListData(context,index){ 
        returnContainer( 
            child: Column( 
                children:<Widget>[ Image.network(listData[index]["imageUrl"]), SizedBox(height:12), 
    Text(
        listData[index]["title"],
        textAlign: TextAlign.center,
        style:TextStyle(fontSize: 20)), 
     ], 
            ), 
            decoration:BoxDecoration( 
                border:Border.all( color:Color.fromRGBO(230,230,230,0.9), 
      1.0 ) ),
    );
    }
    	@override 
        Widgetbuild(BuildContextcontext){ returnGridView.builder( 
            itemCount:listData.length, gridDelegate:SliverGridDelegateWithFixedCrossAxisCount( 
                //横轴元素个数 
                crossAxisCount:2, 
                //纵轴间距 
                mainAxisSpacing:20.0, 
                //横轴间距 
                crossAxisSpacing:10.0, 
                //子组件宽高长度比例 
                childAspectRatio:1.0 ), itemBuilder:this._getListData, 
        ); 
    }
    

    Padding 边距

    在 html 中常见的布局标签都有 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属 性。这个时候我们可以用 Padding 组件处理容器与子元素直接的间距。

    属性 类型 说明
    padding EdgeInsetss 边距值
    child widget 子组件

    Row 水平布局

    属性 类型 说明
    mainAxisAlignment MainAxisAlignment 主轴的排序方式
    crossAxisAlignment CrossAxisAlignment 次轴的排序方式
    children [] 组件子元素

    Column 垂直布局

    属性 类型 说明
    mainAxisAlignment MainAxisAlignment 主轴的排序方式
    crossAxisAlignment CrossAxisAlignment 次轴的排序方式
    children [] 组件子元素

    Expanded 弹性布局

    属性 类型 说明
    flex number 元素占整个父Row/Column的比例
    child Widget 子元素

    Stack 层叠组件

    Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实 现页面的定位布局

    属性 类型 说明
    alignment Alignment 配置所有元素的显示位置
    children []Widget 子组件

    Stack Align

    Stack 组件中结合 Align 组件可以控制每个子元素的显示位置

    属性 类型 说明
    alignment Alignment 配置所有子元素的显示位置
    child Widget 子组件

    Stack Positioned

    Stack 组件中结合 Positioned 组件也可以控制每个子元素的显示位置

    属性 类型 说明
    top number 子元素距离顶部的距离
    bottom number 子元素距离底部的距离
    left number 子元素距离左侧的距离
    right number 子元素距离右侧的距离
    child Widget 子组件

    AspectRatio 宽高比

    ​ AspectRatio 的作用是根据设置调整子元素 child 的宽高比。
    ​ AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widget 的高度是由宽 度和比率决定的,类似于 BoxFit 中的 contain,按照固定比率去尽量占满区域。
    ​ 如果在满足所有限制条件过后无法找到一个可行的尺寸,AspectRatio 最终将会去优先 适应布局限制条件,而忽略所设置的比率。

    属性 类型 说明
    aspectRatio double 宽高比
    child Widget 子组件

    Card 卡片

    属性 类型 说明
    margin EdgeInserts 外边距
    child Widget 子组件
    shape Shape 卡片的阴影效果,默认阴影效果为圆角的长方形边

    Wrap 流布局

    ​ Wrap 可以实现流布局,单行的 Wrap 跟 Row 表现几乎一致,单列的 Wrap 则跟 Row 表 现几乎一致。但 Row 与 Column 都是单行单列的,Wrap 则突破了这个限制,mainAxis 上空 间不足时,则向 crossAxis 上去扩展显示。

    属性 说明
    direction 主轴的方向,默认水平
    alignment 主轴的对方式
    spacing 主轴方向上的间距
    textDirection 文本方向
    verticalDirection children摆放舒徐,默认是down
    runAlignment run的对齐方式
    runSpacing run的间距
  • 相关阅读:
    ORACLE 数据迁移到SQL SEVER2005的问题
    sql server性能分析检测数据库阻塞语句
    经典存储过程
    sql server性能分析查询死锁的sql语句
    sql server性能分析索引使用效率评估
    discuz!X2.5不改代码即可去掉网址后面的forum.php后缀
    discuz!X2.5伪静态设置
    详解ListView
    frameset、frame和iframe的区别
    android中的Context到底该怎么用
  • 原文地址:https://www.cnblogs.com/bananafish/p/12255034.html
Copyright © 2020-2023  润新知