Flutter基礎(前端教程①⑦-Column豎直-Row水平-Warp包裹-Stack堆疊)

MainAxisAlignment?是一個枚舉類,用于控制主軸(Main Axis)?方向上子組件的排列和對齊方式。

MainAxisAlignment?的常用取值及效果:

  1. MainAxisAlignment.start
    子組件沿主軸的起點對齊(Row 左對齊,Column 頂部對齊)

  2. MainAxisAlignment.end
    子組件沿主軸的終點對齊(Row 右對齊,Column 底部對齊)

  3. MainAxisAlignment.center
    子組件在主軸方向上居中對齊

  4. MainAxisAlignment.spaceBetween
    子組件之間均勻分配剩余空間,首尾組件貼近邊緣(無額外間距)

  5. MainAxisAlignment.spaceAround
    子組件兩側分配相等空間,首尾組件到邊緣的距離是組件間距的一半

  6. MainAxisAlignment.spaceEvenly
    子組件之間及與邊緣的距離完全相等

Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, // 水平方向均勻分布children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),Container(width: 50, height: 50, color: Colors.blue),],
)
屬性功能描述取值示例
mainAxisSize決定容器在主軸方向上的空間大小:
-?max:盡可能占滿父容器的空間
-?min:僅包裹子組件,不額外占空間
MainAxisSize.max(默認)、MainAxisSize.min
mainAxisAlignment決定子組件在容器的主軸空間內如何排列(如對齊方式、間距分配)startcenterspaceBetween?等
情況 1:mainAxisSize: max(容器占滿空間)
Row(mainAxisSize: MainAxisSize.max, // 容器寬度=屏幕寬度mainAxisAlignment: MainAxisAlignment.spaceBetween, // 子組件分散在整個寬度上children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),],
)

效果:兩個色塊分別靠向屏幕左右邊緣,中間有大量空隙(利用了容器的全部寬度)。

情況 2:mainAxisSize: min(容器僅包裹子組件)
Row(mainAxisSize: MainAxisSize.min, // 容器寬度=兩個色塊寬度之和(100)mainAxisAlignment: MainAxisAlignment.spaceBetween, // 無效果(沒有額外空間)children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),],
)

效果:兩個色塊緊挨著(總寬度 100),spaceBetween?無法產生間距(因為容器沒有多余空間)。

CrossAxisAlignment

Warp

在 Flutter 中,Wrap?是一個布局組件,用于在子組件超出父容器邊界時自動換行(或換列),類似于文本換行的效果。它解決了?Row/Column?中子組件超出界溢出的問題,是處理動態數量子組件布局的常用選擇。

常用屬性:

  1. direction:指定主軸方向(默認水平)

    • Axis.horizontal:水平方向排列,空間不足時換行(默認)
    • Axis.vertical:垂直方向排列,空間不足時換列
  2. spacing:主軸方向上子組件之間的間距

  3. runSpacing:行與行(或列與列)之間的間距

  4. alignment:主軸方向上的對齊方式(類似?mainAxisAlignment

  5. crossAxisAlignment:交叉軸方向上的對齊方式(類似?CrossAxisAlignment

示例代碼:

下面是一個水平方向的?Wrap?示例,包含多個按鈕,當屏幕寬度不足時會自動換行:

Wrap(direction: Axis.horizontal, // 水平方向排列(默認)spacing: 8.0, // 按鈕之間的水平間距runSpacing: 8.0, // 行之間的垂直間距alignment: WrapAlignment.start, // 每行左對齊children: [ElevatedButton(onPressed: () {}, child: Text("按鈕1")),ElevatedButton(onPressed: () {}, child: Text("按鈕2")),ElevatedButton(onPressed: () {}, child: Text("按鈕3")),ElevatedButton(onPressed: () {}, child: Text("按鈕4")),ElevatedButton(onPressed: () {}, child: Text("按鈕5")),ElevatedButton(onPressed: () {}, child: Text("按鈕6")),],
)

1.?Stack(堆疊容器)

Stack?是一個容器組件,用于將子組件按順序堆疊在一起,后面的子組件會覆蓋在前面的子組件之上(類似 CSS 中的?position: absolute?堆疊效果)。

核心特點:
  • 子組件默認左上角對齊(可以通過?alignment?屬性修改默認對齊方式)。
  • 本身不限制大小,默認會根據子組件中最大的尺寸來調整自身大小(也可通過?fit?屬性控制)。

2.?Positioned(定位組件)

Positioned?只能作為?Stack?的直接子組件,用于精確控制子組件在?Stack?中的位置,通過設置與?Stack?邊緣的距離來定位。

常用屬性(用于定位):
  • left:距離?Stack?左邊緣的距離
  • right:距離?Stack?右邊緣的距離
  • top:距離?Stack?上邊緣的距離
  • bottom:距離?Stack?下邊緣的距離
  • width/height:固定子組件的寬高(可選,不設置則由子組件自身大小決定)

示例:圖片上疊加文字和圖標

下面的代碼實現了 “背景圖 + 頂部標題 + 右下角圖標” 的層疊效果:

Stack(// 未使用 Positioned 的子組件會默認左上角對齊(可通過 alignment 修改)alignment: Alignment.center, // 未定位子組件的默認對齊方式(這里無效,因為所有子組件都用了 Positioned)children: [// 底層:背景圖片(占滿 Stack)Positioned.fill( // 快捷方式:讓子組件填滿整個 Stackchild: Image.network('https://picsum.photos/400/300',fit: BoxFit.cover, // 圖片鋪滿容器alt: "示例背景圖",),),// 中層:頂部標題(距離頂部 16 像素,水平居中)Positioned(top: 16,left: 0,right: 0, // left 和 right 都設為 0 可讓組件水平占滿,配合 textAlign 居中child: Text("風景照片",style: TextStyle(color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold),textAlign: TextAlign.center,),),// 上層:右下角圖標(距離右和下各 16 像素)Positioned(right: 16,bottom: 16,child: Icon(Icons.favorite, color: Colors.red, size: 30),),],
)

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

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

相關文章

構建智能視頻中樞--多路RTSP轉RTMP推送模塊在軌道交通與工業應用中的技術方案探究

1?? 行業背景與技術需求🚈 軌道交通行業對視頻監控的深度依賴在現代城市軌道交通系統中,視頻監控已不僅僅是安防的一部分,更是貫穿于運營管理、車輛調度、應急指揮和安全保障的核心技術手段。列車車載監控 ——列車上普遍部署多路高清攝像頭…

【Android Studio 2025 漢化教程】

廢話不多說,直接上干貨。 前提:JeBrains系列2025版已經集成中文插件,用戶不需下載,只要設置下即可,但Android Studio并不內置也不提供漢化插件。需要工具: 1.IDEA(其他JeBrains系列也可以&#…

網絡安全初級(前端頁面的編寫分析)

源代碼index.html<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>登錄頁面</title><!--…

RAG項目實戰:LangChain 0.3集成 Milvus 2.5向量數據庫,構建大模型智能應用

項目背景 最近&#xff0c;有時間&#xff0c;想著動手實戰一下&#xff0c;從0到1搭建一個 RAG 系統&#xff0c;也是想通過實戰的方式來更進一步學習 RAG。因此&#xff0c;就定下了以項目實戰為主&#xff0c;書籍為輔的執行方式。&#xff08;書籍是黃佳老師著的《RAG 實戰…

docker build 和compose 學習筆記

目錄 docker build 筆記 1. 路徑解析 2. 關鍵注意事項 2. docker compose up -d 核心區別對比 常見工作流 補充說明 1. 功能區別 2. 協作關系 場景 1&#xff1a;Compose 自動調用 Build 場景 2&#xff1a;先 Build 后 Compose 3. 關鍵區別 4. 為什么需要協作&…

Java學習第六十六部分——分布式系統架構

目錄 一、前言提要 二、核心目標 三、核心組件與技術 1. 服務拆分與通信 2. 服務注冊與發現 3. 配置中心 4. 負載均衡 5. 熔斷、降級與限流 6. API 網關 7. 分布式數據管理 8. 分布式追蹤與監控 9. 容器化與編排 四、典型Java分布式技術棧組合 五、關鍵…

Pycharm的Terminal打開后默認是python環境

Pycharm的Terminal打開后默認是python環境解決方案Pycharm的Terminal打開后默認是python環境&#xff0c;無法執行pip等命令&#xff0c;也沒辦法退出 解決方案 點擊Settings -> Tools -> Terminal 可以看到當前默認打開的是torch19py38環境中的python.exe&#xff08;…

LVS——nat模式

一、搭建nat模式下LVS的實驗環境1.創建四臺虛擬機client——客戶端&#xff1a;192.168.134.111/24&#xff08;nat模式&#xff09;LVS——調度器【雙網卡】&#xff1a;192.168.134.112/24&#xff08;nat模式&#xff09;、172.25.254.111/24&#xff08;僅主機模式&#xf…

ElasticSearch是什么

ElasticSearch是什么 ElasticSearch 是一個基于 Apache Lucene 的開源分布式搜索引擎&#xff0c;用于全文搜索、日志分析、實時數據分析等場景。它以高性能、分布式架構和易用性著稱&#xff0c;支持 JSON 格式的數據存儲和查詢&#xff0c;廣泛應用于日志監控、搜索服務、企業…

linxu CentOS 配置nginx

1、準備要發布的文件夾sudo mkdir -p /var/www/myfiles # 創建文件夾&#xff08;如果不存在&#xff09; sudo chmod -R 755 /var/www/myfiles # 設置權限&#xff08;確保 Nginx 可以讀取&#xff09; sudo chown -R nginx:nginx /var/www/myfiles # 修改所有者&#xff0…

內網穿透利器:基于HTTPHTTPS隧道的代理工具深度解析

內網穿透利器&#xff1a;基于HTTP/HTTPS隧道的代理工具深度解析 一、引言 在滲透測試和內網滲透中&#xff0c;HTTP/HTTPS隧道技術是突破網絡邊界的關鍵手段。它通過將TCP流量封裝在HTTP協議中&#xff0c;穿透防火墻/NACL策略&#xff0c;實現內網橫向移動。本文以reGeorg為…

容器編排K8S

k8s概述 容器部署優勢:部署方便,不依賴底層環境,升級鏡像 本質是一個容器編排工具,golang語言開發 master master管理節點:kube-api-server請求接口,kube-scheduler調度器,kube-controller-manager控制器/管理器,etcd分布式存儲數據庫 work node服務節點:kubelet代理保…

C語言:深入理解指針(1)

1. 內存和地址在了解指針前&#xff0c;我們需要知道內存和地址是什么。1.1 內存首先來看內存。舉個例子&#xff1a;當你在酒店找房間時&#xff0c;你并不是一層一層一間一間找&#xff0c;而是通過酒店為每間房子設置的門牌號直接找到你的房間&#xff0c;這樣的效率就會快很…

完整的 SquareStudio 注冊登錄功能實現方案:已經燒錄到開發板正常使用

根據你的需求&#xff0c;我將提供完整的實現方案&#xff0c;解決按鈕同時執行多個動作的問題&#xff0c;并確保注冊登錄功能正常工作。所需文件結構需要創建和修改的文件如下&#xff1a;ui_events.h - 事件處理函數聲明events.c - 實際的事件處理邏輯ui.c - UI 初始化和事件…

OkHttp 與 Chuck 結合使用:優雅的 Android 網絡請求調試方案

前言在 Android 應用開發過程中&#xff0c;網絡請求調試是日常工作中不可或缺的一部分。Chuck 是一個輕量級的 OkHttp 攔截器&#xff0c;能夠在應用內直接顯示網絡請求和響應的詳細信息&#xff0c;無需連接電腦或使用額外工具。本文將詳細介紹如何將 OkHttp 與 Chuck 結合使…

AI學習--本地部署ollama

AI小白&#xff0c;記錄下本地部署ollama1.下載安裝ollama下載地址ollama官方地址https://ollama.com/download根據系統下載即可下面是我下載的地址 https://release-assets.githubusercontent.com/github-production-release-asset/658928958/e8384a9d-8b1e-4742-9400-7a0ce2a…

docker 設置鏡像倉庫代理

1. 創建 Docker 服務的代理配置文件sudo mkdir -p /etc/systemd/system/docker.service.d2.創建文件 /etc/systemd/system/docker.service.d/http-proxy.conf&#xff0c;內容如下&#xff1a;[Service] Environment"HTTP_PROXYhttp://192.168.0.111:7890" Environme…

ffmpeg rtsp 丟包處理

直接用 demux 在有些網絡中&#xff0c;丟包畫屏&#xff1b; 再ffmpeg和ffplay中&#xff0c;可以指定 tcp 方式&#xff0c;所以代碼直接設置陶瓷坯方式&#xff1b; // 設置RTSP選項優化接收數據流防止數據包丟失 av_dict_set(&options, "rtsp_transport", …

aosp15實現SurfaceFlinger的dump輸出帶上Layer詳細信息踩坑筆記

背景&#xff1a; 針對上一篇文章 aosp15上SurfaceFlinger的dump部分新特性-無Layer信息輸出如何解決&#xff1f; 給大家布置了一個小作業&#xff0c;那就是需要實現dumpsys SurfaceFlinger相關輸出中可以攜帶上所有的Layer的詳細信息需求&#xff0c;今天來帶大家詳細實現一…

Linux 網絡調優指南:廢棄的 tcp_tw_recycle 與安全替代方案

一、問題起源:消失的內核參數 當你在 Debian 10 系統執行 sysctl 命令時,若看到報錯: sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: 沒有那個文件或目錄 這并非配置錯誤,而是Linux 內核演進的結果。自 4.12 版本起,內核正式移除了 tcp_tw_recycle 參數——…