04. 布局组件详解

ListView 列表组件

名称作用类型
scrollDirectionAxis.horizntal 水平列表 Axis.vertical 垂直列表Axis
padding内边距EdgeInsetsGeometry
resolve反向排序bool
children子集List
ListView(
   scrollDirection:Axis.horizntal,
children:[
       ListTile(text: const Text("hello flutter")),
       ListTile(text: const Text("hello flutter")),
       ListTile(text: const Text("hello flutter")),
       ListTile(text: const Text("hello flutter")),
       ListTile(text: const Text("hello flutter")),
  ]
)

动态渲染列表

List list = ["hello flutter","hello dart"]
ListView.builder(
itemCount:list.length,
   itenBuilder:(context,index){
       return ListTile(title:Text("${list[index]}"))
  }
)

GridView 网格布局组件

快速实现 宫格式 布局

名称说明类型
scrollDirection滚动方式Axis
padding内边距EdgeInsetsGeometry
resolve数组翻转bool
crossAxisSpacing水平间距double
mainAxisSpacing垂直间距double
maxCrossAxisExtent横轴的最大长度用在GridView.extent
childAspectRatio宽高比double
children子集List
shrinkWrap完全支配子元素高度bool

GridView.count

横轴固定数量的布局

GridView.count(
crossAxisCount:3,
  children:[
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
  ]
)

GridView.extent

横轴的最大长度

GridView.extent(
maxCrossAxisExtent:2,
   children:[
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
       Icon(Icons.add),
  ]
)

GridView.builder

动态渲染 GridView 列表

List list = ["hello flutter","hello dart"];
GridView.builder(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  crossAxisSpacing: 10.0, //水平子 Widget 之间间距
  mainAxisSpacing: 10.0, //垂直子 Widget 之间间距
  crossAxisCount: 2, //一行的 Widget 数量
  ),
   itemCount:list.length,
   itemBuilder:(context,index){
       return Text("${list[index]}")
  }
)

padding 内边距组件

包裹的子元素可以带有 padding 的边距

属性作用类型
padding内边距 ( 必填 )EdgeInsets.fromLTRB(left, top, right, bottom)
child子组件Widget
Padding(
padding:EdgeInsets.fromLTRB(0, 0, 0, 0),
   child:const Text("hello world")
)

Row 和 Column 线性布局

类似于 css 的 flex 思想

Row 水平布局

属性作用类型
mainAxisAlignment主轴对齐方式MainAxisAlignment
crossAxisAlignment次轴的对齐方式CrossAxisAlignment
children子组件集合[<widget>]
Row(
mainAxisAlignment: MainAxisAlignment.center,
   crossAxisAlignment: CrossAxisAlignment.center,
   chldren:[]
)

Column 水平布局

属性作用类型
mainAxisAlignment主轴对齐方式MainAxisAlignment
crossAxisAlignment次轴的对齐方式CrossAxisAlignment
children子组件集合[<widget>]
Column(
mainAxisAlignment: MainAxisAlignment.center,
   crossAxisAlignment: CrossAxisAlignment.center,
   chldren:[]
)

Flex 布局

思想完全和 css 中的 Flex 相同, 只不过在 Flutter 中大部分使用 Row 和 Column 搭配 Expanded 实现

水平布局

Flex(
direction:Axis.horizontal,
children:[]
)

垂直布局

Flex(
direction:Axis.vertical,
children:[]
)

Expanded 容器分配组件

主要用于容器内部的填充分配, 组件内部可以用 flex 属性, flex 的用法和思想同 css 的 Flex 的 flex 属性 , 可以在 row \ column 和 flex 组件中使用.

Row(
children:[
Expanded(
flex:1,
child:<widget>
)
]
)

定位布局 Stack

stack 类似于 css 中的粘性定位, 可以搭配 Align 和 positiond 来实现页面的定位

stack 会填充上级元素的宽高, 如果为全局则全屏填充

属性作用类别
aligment显示位置Alignment
children子类的集合[<widget>]
Stack(
alignment: Alignment.center,
children:[]
)

Align 对齐组件

在其元素的所有子元素都会继承Align的属性

属性作用类型
alignment显示位置Alignment
child子组件<widget>
Align(
alignment: Alignment.center,
child:<widget>
)

AspectRatio 宽高比

会调整子元素的宽高比

属性作用类型
aspectRatio宽高比int / int
child自组件<widget>
AspectRatio(
aspectRatio: 2/1 ,// 表示高是宽的一半
child:
)

card 卡片组件 (带阴影的盒子)

属性作用类型
margin外边距EdgeInsets.all(int)
child子组件<widget>
elevation阴影的深度
color背景颜色
shadowColor阴影颜色
clipBehavior内容溢出裁剪
shape阴影效果的样式RoundedRectangleBorder
Card(
margin:EdgeInsets.all(10),
color:Colors.red,
child:<widget>
)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇