【Flutter 學習筆記】Row、Column 佈局容器

閱讀時間約 10 分鐘
raw-image
【Flutter 學習筆記】🎬 教學影片:連結
【Flutter 學習筆記】📚 文章目錄:連結

今天我們要來探討 Flutter 中的兩個重要佈局容器:Row 和 Column。這兩個 Widget 是構建 Flutter 應用界面的基石,能夠幫助我們有效地排列子元件。接下來,我們將逐步解析這些概念,並透過程式碼示範來加深理解。

1. 環境設置

在我們的 MaterialApp 框架中,body 參數傳入了 DemoPage 頁面元件。現在,讓我們切換到 DemoPage 頁面,並使用 stless 快捷鍵來快速生成 StatelessWidget 類別的程式碼。

class DemoPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Placeholder(); // 這裡稍後會替換成 Row 或 Column
}
}

2. Row 水平佈局容器

首先,我們來看看 Row 水平佈局容器。Row 可以讓子元件從左至右排列。在 build 方法中,我們將返回一個 Row Widget。

@override
Widget build(BuildContext context) {
return Row(
children: [
Container(
width: 100,
height: 100,
color: Colors.yellow,
),
Container(
width: 100,
height: 100,
color: Colors.green,
),
Container(
width: 100,
height: 100,
color: Colors.red,
),
],
);
}

2.1 Row 的結構解析

  • Row Widget:這是一個可以包含多個子元件的容器,透過 children 參數來指定。Container:每個子元件都是一個 Container,這裡我們設定了寬度、高度和背景顏色。你會看到三個顏色方塊水平排列。可以嘗試更改方塊的寬度、高度和顏色,觀察效果。

3. Column 垂直佈局容器

接下來,我們來看看 Column 垂直佈局容器。Column 可以讓子元件從上至下排列。現在,我們將把 Row Widget 改成 Column Widget。

@override
Widget build(BuildContext context) {
return Column(
children: [
Container(
width: 100,
height: 100,
color: Colors.yellow,
),
Container(
width: 100,
height: 100,
color: Colors.green,
),
Container(
width: 100,
height: 100,
color: Colors.red,
),
],
);
}

3.1 Column 的結構解析

  • Column Widget:這是一個可以包含多個子元件的容器,透過 children 參數來指定,並且子元件會垂直排列。你會看到三個顏色方塊從水平排列變成垂直排列。

透過這個範例,應該能夠理解 Row 和 Column Widget 的差異。

4. 混合使用 Row 和 Column

值得注意的是,Row 和 Column 可以互相嵌套使用。例如,您可以在 Row 的子元件中放置 Column,或在 Column 的子元件中放置 Row。這樣的組合可以創造出更複雜的佈局。

@override
Widget build(BuildContext context) {
return Row(
children: [
Column(
children: [
Container(width: 50, height: 50, color: Colors.blue),
Container(width: 50, height: 50, color: Colors.orange),
],
),
Column(
children: [
Container(width: 50, height: 50, color: Colors.purple),
Container(width: 50, height: 50, color: Colors.cyan),
],
),
],
);
}

5. 佈局技巧

了解 Row 和 Column 的基本用法後,我們可以進一步探索一些佈局技巧,這些技巧能幫助我們創建更具吸引力和功能性的界面。

5.1 Padding 和 Margin

在設計界面時,適當的間距是非常重要的。Flutter 提供了 Padding 和 Margin 來控制元件之間的距離。

  • Padding:用於控制元件內部的間距。Margin:用於控制元件外部的間距。

以下是如何使用 Padding 和 Margin 的範例:

@override
Widget build(BuildContext context) {
return Column(
children: [
Container(
width: 100,
height: 100,
color: Colors.yellow,
padding: EdgeInsets.all(10), // 內部間距
),
SizedBox(height: 20), // 用於增加元件之間的空間
Container(
width: 100,
height: 100,
color: Colors.green,
margin: EdgeInsets.only(top: 20), // 外部間距
),
],
);
}

5.2 使用 Spacer

在 Row 和 Column 中,您可以使用 Spacer Widget 來自動調整子元件之間的空間。這對於創建靈活的佈局非常有用。

@override
Widget build(BuildContext context) {
return Row(
children: [
Container(width: 50, height: 50, color: Colors.red),
Spacer(), // 自動填充空間
Container(width: 50, height: 50, color: Colors.blue),
],
);
}

5.3 Flex 和 Expanded

在 Row 和 Column 中,您可以使用 Expanded Widget 來讓子元件佔據可用的空間。這對於需要根據可用空間調整大小的元件特別有用。

dart複製代碼@override
Widget build(BuildContext context) {
return Row(
children: [
Expanded(
child: Container(color: Colors.red),
),
Expanded(
child: Container(color: Colors.green),
),
Expanded(
child: Container(color: Colors.blue),
),
],
);
}

6. 程式碼整理

在我們進行程式碼編寫的過程中,保持程式碼的整潔和可讀性是非常重要的。為了讓程式碼更易於維護和理解,我們可以使用格式化工具來整理程式碼。

6.1 程式碼格式化

在 Flutter 開發中,使用 Visual Studio code IDE 編輯器可以使用以下快捷鍵來快速整理程式碼:

  • Windows:按下 Shift + Alt + F
  • Mac:按下 Shift + Option + F

此外,您也可以使用滑鼠右鍵點擊編輯器,開啟選單後選擇「格式化文件」,這樣也能達到相同的效果。這樣的操作不僅能提升程式碼的可讀性,還能幫助您更快地找到錯誤和進行調整。

avatar-img
10會員
234內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本文深入探討 Flutter 中的 Container 元件,這是一個多功能的包裝 Widget,能夠有效管理和裝飾其他 Widget。文章將詳細說明如何調整 Container 的大小、設置外部間距(margin)以及使用 BoxDecoration 來自訂樣式。
在這篇文章中,介紹 Flutter 中的 StatefulWidget,並透過一個簡單的計數器應用程式來說明其結構與運作方式。文章涵蓋了應用程式的主要組件,包括 main 函數、MyApp 類別、MyHomePage 類別及其對應的狀態類別 _MyHomePageState。
本篇文章探討 Flutter 中的 Text 文字元件及其內部屬性。學習如何查看 Text 元件的原始碼,補充介紹位置參數與具名參數。
在這篇文章中,我們深入探討 Flutter 中的 Text 元件,這是一個用於顯示文字的基本組件。無論是純文字顯示、字體樣式的設定,還是多行顯示,Text 元件都能輕鬆應對。
本課程介紹了如何建立第一個 Flutter 應用程式。學習內容包括匯入 Flutter 套件、定義主函數、建立無狀態的 Widget 類別 MainApp,以及使用 Scaffold 和 Center 來組織 UI 元件。最終,學員能夠編譯並執行一個顯示「HKT 線上教室」的簡單應用程式。
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
本文深入探討 Flutter 中的 Container 元件,這是一個多功能的包裝 Widget,能夠有效管理和裝飾其他 Widget。文章將詳細說明如何調整 Container 的大小、設置外部間距(margin)以及使用 BoxDecoration 來自訂樣式。
在這篇文章中,介紹 Flutter 中的 StatefulWidget,並透過一個簡單的計數器應用程式來說明其結構與運作方式。文章涵蓋了應用程式的主要組件,包括 main 函數、MyApp 類別、MyHomePage 類別及其對應的狀態類別 _MyHomePageState。
本篇文章探討 Flutter 中的 Text 文字元件及其內部屬性。學習如何查看 Text 元件的原始碼,補充介紹位置參數與具名參數。
在這篇文章中,我們深入探討 Flutter 中的 Text 元件,這是一個用於顯示文字的基本組件。無論是純文字顯示、字體樣式的設定,還是多行顯示,Text 元件都能輕鬆應對。
本課程介紹了如何建立第一個 Flutter 應用程式。學習內容包括匯入 Flutter 套件、定義主函數、建立無狀態的 Widget 類別 MainApp,以及使用 Scaffold 和 Center 來組織 UI 元件。最終,學員能夠編譯並執行一個顯示「HKT 線上教室」的簡單應用程式。
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
本課程學習如何添加 Room 資料庫相關依賴庫配置。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
浮動(float)是早期用來創建佈局的技術。元素可以向左或向右浮動,旁邊的元素會環繞浮動元素。浮動元素通常用於圖文混排或簡單的兩欄佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
本課程學習如何添加 Room 資料庫相關依賴庫配置。