摘要:也是中常用的控件。屬性主軸對準方式對于來說,水平是主軸。對于,交叉軸是水平。由左到右,左為頭,右為尾表示在水平方向主軸。表示從左上角開始排文本方向,的流動方向表示超過的部分是否裁剪掉不剪掉。默認是是包裹的高度即可。
flutter控件練習demo地址:github
一 Row 和 Column 1. 簡介因為 Row 和 Column 都是繼承于 Flex,所以他們兩個的屬性也都是 Flex 的屬性
Row 是 Flutter 中常用的控件。一個讓 children 在水平方向依次排列 。如果 Row 空間 不足的話。 自身不帶滾動的。
Column 也是 Flutter 中常用的控件。 一個 children 在垂直方向依次排列 。如果 Column 空間 不足的話。 自身不帶滾動的。
2. 屬性對于 Row 來說 , 水平是主軸。垂直是 交叉軸。 對于 Column 來說, 垂直是主軸。水平是 交叉軸 把 children 放到 主軸 的哪個位置 。 如果要驗證這個屬性,記住把 mainAxisSize 設置成 MainAxisSize.max ,
取值 | 說明 | 樣式圖片(Rowd 的demo) |
---|---|---|
MainAxisAlignment.start(默認值) | 把 children 放到主軸的頭部 | |
MainAxisAlignment.center | 把 children 放到主軸的中間 | |
MainAxisAlignment.end | 把 children 放到主軸的尾部 | |
MainAxisAlignment.spaceAround | 將主軸方向空白區(qū)域均分,使得children之間空間相等,但是首尾 childre 的空白部分為一半 | |
MainAxisAlignment.spaceBetween | 將主軸方向空白區(qū)域均分,使得children之間空間相等,但是首尾childre靠近收尾,沒有空細逢 | |
MainAxisAlignment.spaceEvenly | 將主軸方向空白區(qū)域均分,使得children之間空間相等,包括首尾childre |
也就是來規(guī)定自己( Row 或者 Column )的大小。
MainAxisSize.min : 主軸方向,包裹住 childre 即可。相當于 android 中的 wrap_content
MainAxisSize.max(默認值) : 主軸方向,鋪滿 ( Row 或者 Column )的父 Widget 的大小。 相當于 android 中的 match_parent
交叉軸 顧名思義: 就是 跟 主軸 垂直的 一個軸 對于 Row 。交叉軸 是 在垂直。對于 Column,交叉軸 是水平 。下面還是 以 Row 舉個例子
取值 | 說明 | 圖片demo(Row) |
---|---|---|
CrossAxisAlignment.start | 把 children 放到交叉軸的頭部 | |
CrossAxisAlignment.end | 把 children 放到交叉軸的尾部 | |
CrossAxisAlignment.center | 把 children 放到交叉軸的中間 | |
CrossAxisAlignment.stretch | 讓children填滿交叉軸方向 | 無(沒有測試出來,控件 找不到了) |
CrossAxisAlignment.baseline | 讓children 于 baseline 對齊,如果主軸是垂直的,那么這個值是當作開始 ,設置了此 屬性 textBaseline 不能為 null |
children 在 主軸 怎樣排列。 正方向排列還是反方向排列
TextDirection.ltr : 表示在水平方向(主軸)。由左到右 , 左為頭 , 右為尾
TextDirection.rtl :表示在水平方向(主軸)。由右到左 , 右為頭 , 左為尾
TextDirection.ltr : 表示在垂直方向(主軸)。由上到下 , 上為頭 , 下為尾
TextDirection.rtl :表示在垂直方向(主軸)。由下到上 , 下為頭 ,上為尾
children 在 交叉軸 怎樣排列。 正方向排列還是反方向排列
VerticalDirection.down : 表示在垂直方向(交叉軸)。由上到下 , 上為頭 , 下為尾
VerticalDirection.up :表示在垂直方向(交叉軸)。由下到上 , 下為頭 , 上為尾
VerticalDirection.down : 表示在水平方向(交叉軸)。由左到右 , 左為頭 , 右為尾
TextDirection.rtl :表示在水平方向(交叉軸)。由右到左 , 右為頭 , 左為尾
二 Stack取代線性布局 (和Android中的LinearLayout相似,但是我感覺怎么這么像 FrameLayout 呢?),Stack允許子 widget 堆疊, 你可以使用 Positioned 來定位他們相對于Stack的上下左右四條邊的位置。Stacks是基于Web開發(fā)中的絕度定位(absolute positioning )布局模型設計的。用于將多個childs相對于其框的邊緣定位,多用于以簡單方式重疊children
2.1 屬性alignment: 默認值。AlignmentDirectional.topStart ( AlignmentDirectional(-1.0, -1.0) )。 表示從左上角開始排 children
textDirection: 文本方向 , children 的流動方向
overflow: 表示 超過的部分是否裁剪掉 Overflow.visible 不剪掉。 Overflow.clip 減掉
fit: 讓 children 怎樣填充 Stack 。
StackFit.passthrough 不改變子節(jié)點約束 也就是說 children 是多大就是多大
StackFit.expand 子節(jié)點最大可能的占用空間 ,讓 children 的大小 擴大到 Stack 的大小
StackFit.loose:放開了子節(jié)點寬高的約束,可以讓子節(jié)點從0到最大尺寸
三 demo圖片demo 代碼
import "package:flutter/material.dart";
class LayoutDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text("row"),
centerTitle: true,
),
body: RowDemo(),
);
}
}
class RowDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
final _list = [
RaisedButton(
disabledColor: Colors.red,
child: Text("兒子1"),
),
Text("兒子2"),
Text("兒子3"),
Text("兒子4"),
Text("兒子5"),
];
return Column(
children: [
SizedBox(
height: 30,
),
Container(
color: Colors.grey,
child: Row(
// 主軸(main axis)
// 把 children 放到 Column 主軸 的哪個位置
// end : 尾部, start :頭部, center : 中間 ,spaceBetween:在 children 之間均勻地放置 空間 ,spaceAround : 每個 children
mainAxisAlignment: MainAxisAlignment.start,
// 此 Row 的寬度。默認是 MainAxisSize.max
// MainAxisSize.min 是 包裹 children 的高度 即可 。android 中 相當于 wrap_content
// MainAxisSize.max 是 鋪滿 Row 的父 Widget 的寬度 。android 中 相當于 match_parent
// 如果設置成 MainAxisSize.min 。 那么 mainAxisAlignment 屬性相當于無效。 因為是包裹 children
mainAxisSize: MainAxisSize.max,
// 交叉軸(cross axis)
// 把 children 放到 Column 主軸 的哪個位置
// end : 尾部, start :頭部, center : 中間 ,
crossAxisAlignment: CrossAxisAlignment.start,
// children 在主軸 的排列順序
textDirection: TextDirection.ltr,
// children 在 交叉軸 的排列順序
verticalDirection: VerticalDirection.down,
children: _list,
),
),
SizedBox(
height: 30,
),
SizedBox(
width: 200,
height: 200,
child: Stack(
alignment: AlignmentDirectional.topStart,
// alignment: AlignmentDirectional(-1.0, -1.0),
fit: StackFit.loose,
overflow: Overflow.visible,
children: [
Container(
color: Colors.black,
height: 200,
width: 200,
),
Container(
color: Colors.deepPurple,
height: 100,
width: 100,
),
Container(
color: Colors.green,
height: 50,
width: 50,
),
],
)),
],
);
}
}
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7002.html
摘要:前言最近比較熱門,但是成體系的文章并不多,前期避免不了踩坑我這篇文章主要介紹如何使用實現(xiàn)一個比較復雜的手勢交互,順便分享一下我在使用過程中遇到的一些小坑,減少大家入坑作者鏈接先睹為快本項目支持運行,效果如下對了,順便分享一下生成的小竅門,建 前言 Flutter最近比較熱門,但是Flutter成體系的文章并不多,前期避免不了踩坑;我這篇文章主要介紹如何使用Flutter實現(xiàn)一個比較復雜...
摘要:前言最近比較熱門,但是成體系的文章并不多,前期避免不了踩坑我這篇文章主要介紹如何使用實現(xiàn)一個比較復雜的手勢交互,順便分享一下我在使用過程中遇到的一些小坑,減少大家入坑作者鏈接先睹為快本項目支持運行,效果如下對了,順便分享一下生成的小竅門,建 前言 Flutter最近比較熱門,但是Flutter成體系的文章并不多,前期避免不了踩坑;我這篇文章主要介紹如何使用Flutter實現(xiàn)一個比較復雜...
摘要:布局控件不會直接呈現(xiàn)內(nèi)容,可看作承載可視控件的容器。布局控件也是可以模擬顯示的,通常用于調(diào)試布局樣式時用到的網(wǎng)格線標尺動畫幀等。但是當頁面內(nèi)容需要超出屏幕尺寸時,就用和代替。 不知不覺已經(jīng)到了第7篇,然而很多萌新玩家可能還是不知道如何堆砌控件,像用CSS一樣搭出漂亮的APP界面,我也一樣,紅紅火火恍恍惚惚,直到今天含淚讀完Flutter布局基礎,仿佛打開了一個全新的世界。 基本概念 在...
摘要:當發(fā)送按鈕觸發(fā)事件后調(diào)用函數(shù),在中執(zhí)行了方法,此時根據(jù)中的變量變更重新渲染對象,然后大家就可以看到消息記錄框中底部新增了一行消息。 熟悉了flutter的各種控件和相互嵌套的代碼結構后,可以再加深一點難度:加入動畫特效。 雖然flutter的內(nèi)置Metarial控件已經(jīng)封裝好了符合其設計語言的動畫特效,使開發(fā)者節(jié)約了不少視覺處理上的精力,比如點擊或長按listTile控件時自帶水波紋動...
摘要:控件練習地址一。單選框中的單選框,和一樣本身沒有狀態(tài),必須父親有狀態(tài)才能改變值屬性此的值當選擇此的時候的回調(diào)。flutter控件練習demo地址:github 一。Radio (單選框) flutter 中的單選框 , 和 Checkbox 一樣 本身沒有狀態(tài),必須父親有狀態(tài) 才能改變值 1.1 屬性 value: 此 Radio 的 value 值 onChanged: 當選擇此 ...
閱讀 633·2021-11-24 09:39
閱讀 3478·2019-08-30 15:53
閱讀 2509·2019-08-30 15:44
閱讀 3237·2019-08-30 12:54
閱讀 2206·2019-08-29 12:23
閱讀 3304·2019-08-26 14:05
閱讀 2101·2019-08-26 13:36
閱讀 3429·2019-08-26 13:33