Flutter中Align的使用說明

又失業了,作為一個高齡Android程序員今年找工作真難呀。現在Flutter是必需技能了,所以最近在自學。所用書籍叫《Flutter實戰》,如下

如今已看了100多頁,發現這本書寫得……有點趕吧,好幾處講得不清不楚,而關于Align的講解更是誤人,里面的講解是錯誤的,于是去網上搜Align的資料,發現也都是抄來抄去,也都講錯了,直到遇到一篇?https://juejin.cn/post/7080793945466208269?才終于有了點頭緒,但是這篇文章講得好像也有點不對,但是給了我一個關鍵點。

先列出示例代碼

Scaffold(appBar: AppBar(title: Text("小書房"),),body: Center(child: Container(color: Colors.yellow,width: 120,height: 120,child:Align(widthFactor: 2,heightFactor: 2,alignment:Alignment(1,1),child:FlutterLogo(size: 60))),),
);

該段代碼效果圖如下

即一個父容器 Container,寬120 高 120,里面一個Align,Align里又有一個 60* 60 的圖標。

為什么圖標會正好在Container的右下角呢?因為Alignment(1,1)。這個又是什么意思?

先說Align構建的坐標系:Align將父容器(此處的父容器就是 Container)的中心點作為坐標系原點,向右為X正軸,向下為Y正軸;Alignment()的兩個參數的單位其實是 Container 的寬、高的一半,即(1,1)表示的坐標點就是從原點 X軸正向挪動 1 個單位(此處就是Container 寬度的一半即60),Y軸正向挪動一個單位(同理,Y坐標也是60),也就是圖中黃色區域(即Container)的右下角頂點。

FlutterLogo為何正好處于Container右下角區域呢?且正好占據Container的四分之一。

看官方解釋

The alignment property describes a point in the child's coordinate system and a different point in the coordinate system of this widget. The Align widget positions the child such that both points are lined up on top of each other.

使用Align(x,y) 計算出父容器(此處即指Container)和 子組件 (此處即指FlutterLogo)的目標點,然后讓這兩個點重合,以此確定子組件在父容器的位置。還是以上述的代碼為例,可知Container的目標點坐標為(60,60),同理(子組件的原點也在中心),子組件的目標點為(30,30),恰好它倆的目標點都是各自右下角的頂點,讓這倆點重合,所以最終就導致FlutterLogo正好處于Container的右下角的四分之一區域。

alignment:Alignment(1,2)效果如下圖

child: Container(color: Colors.yellow,width: 180,height: 180,child:Align(widthFactor: 2,heightFactor: 2,alignment:Alignment(1,2),child: FlutterLogo(size: 60))
),效果則如下圖

至于Align中的 widthFactor、heightFactor到底在起什么作用,我還沒弄清,因為怎么修改它倆的值,也不會影響結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73821.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java八股文之常見的集合

一、數組的索引為什么從0開始? 尋址公式: 數組的首地址索引乘以存儲數據的類型大小 在根據數組索引獲取元素的時候,會用索引和尋址公式來計算內存所對應的元素數據。如果數組的索引從1開始,尋址公式中,就需要增加一次…

用ASCII字符轉化圖片

代碼 from PIL import Image# 定義 ASCII 字符集,從最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…

詳解Sympy:符號計算利器

Sympy是一個專注于符號數學計算的數學工具,使得用戶可以輕松地進行復雜的符號運算,如求解方程、求導數、積分、級數展開、矩陣運算等。其中比較流行的深度學習框架pytorch的用到了Sympy,主要用于將模型的計算圖轉換為符號化表達式,以便進行分…

高頻SQL 50 題(持續更新)

SQL的編寫與運用 0. 寫在前面 最近學習了數據庫系統概論,其中涉及到了關于SQL語句的編寫,感覺理論知識不足以讓我掌握相關的編寫方式,因此選擇刷力扣上的題目進行復習鞏固。 時間不是很多,可能不會經常更新,有時間寫…

【Python】12、函數-02

文章目錄 1. 返回值2.文檔字符串3. 作用域4. 命名空間 1. 返回值 返回值就是函數執行以后返回的結果,可以通過return來指定函數的返回值。返回值可以通過變量接收返回值 return 后可以返回任意的對象,甚至是一個函數如果僅寫一個return或者不寫return&…

Unity插件-適用于畫面傳輸的FMETP STREAM使用方法(三)基礎使用

目錄 一、插件介紹 二、組件介紹 三、Game View Streaming 1、使用 FM Network UDP 的基本設置 Server Scene Client Scene 2、使用使用 FM WebSocket 的基本設置 四、Audio Streaming 五、Microphone Streaming 一、插件介紹 ??????Unity插件-適用于畫面傳輸的…

如何為預訓練模型進行領域適配:全參數微調、LoRA 還是 Prompt Tuning?

目錄 如何為預訓練模型進行領域適配:全參數微調、LoRA 還是 Prompt Tuning? 1. 全參數微調(Full Fine-tuning) 適用場景 優缺點 示例代碼(使用 Hugging Face Transformers 進行全參數微調) 2. LoRA&am…

C++ —— 線程同步(互斥鎖)

C —— 線程同步(互斥鎖) 線程同步互斥鎖(互斥量)測試代碼mutex互斥鎖 線程同步 線程同步:多線程協同工作,協商如何使用共享資源。 C11線程同步包含三部分內容: 互斥鎖(互斥量&…

UI設計中的加載動畫:優化用戶體驗的細節

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字產品泛濫的今天,用戶對體驗的要求早已超越功能本身。一個看似簡單的加載動畫&…

SpringBoot3+Vue3實戰(Vue3快速開發登錄注冊頁面并對接后端接口)(4)

目錄 一、SpringBoot3Vue3實現基本增刪改查。前后端通信交互、配置后端跨域請求。數據批量刪除。(博客鏈接) 二、SpringBoot3Vue3快速開發登錄、注冊頁面并實現對接。 &#xff08;1&#xff09;操作數據表employee(員工信息表)。 <1>修改employee表的字段組成。 <2&g…

Python標準庫中bisect模塊的bisect_right()函數在網格交易中的應用

本文將深入探討Python標準庫中bisect模塊的bisect_right()函數在網格交易中的具體應用。 bisect模塊 bisect模塊是Python標準庫中的一個模塊&#xff0c;提供了對有序列表的插入和搜索操作的支持。它基于二分查找算法&#xff0c;可以高效地在有序列表中查找或插入元素&#x…

Excel(函數篇):IF函數、FREQUNCY函數、截取函數、文本處理函數、日期函數、常用函數詳解

目錄 IF函數等于判斷區間判斷與AND函數、OR函數一同使用IFNA函數和IFERROR函數 FREQUNCY函數、分斷統計LEFT、RIGHT、MID截取函數FIND函數、LEN函數SUBSTITUTE函數ASC函數、WIDECHAR函數實戰&#xff1a;如何獲取到表中所有工作簿名稱文本處理函數TEXT函數TEXTJOIN函數 日期函數…

生成PDF文件:從html2canvas和jsPdf渲染到Puppeteer矢量圖

剛剛實現而已&#xff1a;第一次明白&#xff0c;雙擊或file:///打開html文件&#xff0c;居然和從localhost:3000打開同一個html文件有本質的區別。 字體居然還能以Base64代碼嵌入到網頁&#xff0c;只是太大太笨。 需要安裝node.js&#xff0c;npm安裝更多依賴&#xff1a;…

Git 分支刪除操作指南(含本地與遠程)

&#x1f680; Git 分支刪除操作指南&#xff08;含本地與遠程&#xff09; 在多人協作的開發過程中&#xff0c;定期清理已合并的臨時分支&#xff08;如 feature/*、bugfix/*、hotfix/* 等&#xff09;可以保持倉庫整潔&#xff0c;避免混亂。 &#x1f4cc; 分支命名規范回…

Qt中打開windows的cmd窗口并顯示

在windows上&#xff0c;用Qt的GUI程序打開另一個程序&#xff0c;使用QProcess即可&#xff0c;并且被打開的程序通常也會顯示出來&#xff0c;但是如果想要打開dos窗口并顯示&#xff0c;并執行其中的命令或者批處理&#xff0c;則需要使用QProcess提供的windows特有的函數QP…

Modbus TCP到RTU:輕松轉換指南!

Modbus TCP 到 RTU&#xff1a;輕松轉換指南&#xff01; 在現代工業自動化領域&#xff0c;Modbus TCP和Modbus RTU兩種通信協議因其高效、穩定的特點被廣泛應用。然而&#xff0c;隨著技術的發展和設備升級的需求&#xff0c;經常會遇到需要將這兩種協議進行互相轉換的場景。…

微信小程序訂閱消息發送消息,點擊消息進入小程序頁面

1、在小程序官網訂閱消息選用或創建消息模板獲取模板ID可多個 如圖&#xff1a; 2、微信小程序前端頁面發送請求訂閱權限 請求模板id的權限可以是一個可以是多個&#xff0c;用戶同意訂閱&#xff0c;獲取code傳遞給后端——后端拿到code生成唯一的openid用于發送訂閱消息 注…

卷積神經網絡 - 卷積層

卷積神經網絡一般由卷積層、匯聚層和全連接層構成&#xff0c;本文我們來學習卷積層。 卷積層&#xff08;Convolutional Layer&#xff09;是卷積神經網絡&#xff08;CNN&#xff09;的核心組件&#xff0c;專門用于處理具有網格結構的數據&#xff08;如圖像、音頻、時間序…

Vue3全局化配置(ConfigProvider)

效果如下圖&#xff1a; 在線預覽 APIs ConfigProvider 參數說明類型默認值theme主題對象Theme{}abstractboolean是否不存在 DOM 包裹元素truetagstringConfigProvider 被渲染成的元素&#xff0c;abstract 為 true 時有效‘div’ Theme Type 名稱說明類型默認值common?全…

LabVIEW煙氣速度場實時監測

本項目針對燃煤電站煙氣流速實時監測需求&#xff0c;探討了靜電傳感器結構與速度場超分辨率重建方法&#xff0c;結合LabVIEW多板卡同步采集與實時處理技術&#xff0c;開發出一個高效的煙氣速度場實時監測系統。該系統能夠在高溫、高塵的復雜工況下穩定運行&#xff0c;提供高…