【Flutter 學習筆記】 Container 容器元件

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

今天我們要一起來探索 Container 容器元件。Container 是一個多功能的 Widget,主要用來包裝其他 Widget,並且可以設定寬度、高度、內距、外距、背景顏色等屬性。接下來,我們將逐步拆解 Container 的使用,讓大家能夠更清楚地理解每個部分的功能和用途。

啟用除錯模式

在開始之前,為了方便觀察 Widget 的佈局大小,我們可以啟用 debugPaintSizeEnabled 模式。在 main 函數中加入以下程式碼:

debugPaintSizeEnabled = true;

這個功能的啟用或關閉都需要重新編譯整個應用程式,無法單純使用 Hot Reload。這是因為這個設定會影響整個應用程式的渲染方式。當我們重新編譯後,可以看到每個 Widget 的邊框,這些邊框能幫助我們更好地理解和調整 Widget 的佈局。

建立無狀態的 Widget

接下來,我們將使用 StatelessWidget 來建立一個無狀態的 Widget。在 MaterialApp 的 home 參數中,我們傳入 HomePage(),這是我們自己撰寫的 Widget。為了讓程式碼更易於維護,我們將 HomePage 的程式碼獨立到一個名為 home_page.dart 的檔案中。

在 home_page.dart 中實作 HomePage Widget

在 home_page.dart 檔案中,我們可以看到 HomePage 繼承自 StatelessWidget,並實作 build 方法。以下是程式碼範例:

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.amber,
);
}
}

在 build 方法中,我們回傳一個 Container Widget,並透過 color 屬性將背景顏色設定為琥珀色。開啟 debugPaintSizeEnabled 除錯模式後,我們可以更清楚地了解整個畫面的佈局結構。

調整 Container 的大小

現在,我們來試著更改 Container 的大小。在 Container 的小括號中加入 width 和 height 屬性:

Container(
width: 300,
height: 200,
color: Colors.amber,
)

當我們使用快捷鍵存檔後,啟用 Hot Reload 功能,就可以看到 Container 的大小被設定為 300 x 200。

設定外部間距

接下來,我們來試著更改外部間距的屬性。在 Container 中加入 margin 屬性:

Container(
width: 300,
height: 200,
margin: EdgeInsets.all(10),
color: Colors.amber,
)

這樣就會在 Container 的四周產生 10 個單位的外距。再次使用 Hot Reload 功能後,可以看到效果。

使用 BoxDecoration 裝飾屬性

我們可以進一步使用 decoration 屬性來設定邊框、圓角等樣式。以下是範例:

Container(
width: 300,
height: 200,
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.circular(50),
),
)

需要注意的是,顏色屬性 color 必須放在 decoration 屬性中,否則會報錯。使用 Hot Reload 功能後,可以看到 Container 的四周出現 50 的圓角。

加入 Text Widget

接下來,我們在 Container 中加入一個 Text Widget,使用 child 屬性:

Container(
width: 300,
height: 200,
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.circular(50),
),
child: Text(
'HKT線上教室',
style: TextStyle(fontSize: 30),

),

在這段程式碼中,我們將 Text Widget 的內容設為「HKT線上教室」,並設定字體大小為 30。接下來,我們可以為 Container 設定內部間距,使用 padding 屬性:

Container(
width: 300,
height: 200,
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.circular(50),
),
padding: EdgeInsets.only(left: 50, top: 100, right: 100, bottom: 10),
child: Text(
'HKT線上教室',
style: TextStyle(fontSize: 30),
),
)

在這裡,我們使用 EdgeInsets.only 來分別設定四個方向的內部間距:左邊 50、上方 100、右邊 100 以及下方 10 的單位。當我們使用 Hot Reload 功能後,可以看到 Container 的內部間距已經正確顯示。

隱藏 Debug 標籤

最後,讓我們補充一個小知識。在 MaterialApp 中,我們可以加入以下程式碼來隱藏右上角的 Debug 標籤:

MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
)

當我們使用 Hot Reload 功能後,右上角的 Debug 標籤將不再顯示。

在應用程式正式發佈之前,務必隱藏這個 Debug 標籤。確保使用者在使用應用程式時不會受到干擾,並讓整體界面看起來更加乾淨和專業。

avatar-img
10會員
233內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
在這篇文章中,介紹 Flutter 中的 StatefulWidget,並透過一個簡單的計數器應用程式來說明其結構與運作方式。文章涵蓋了應用程式的主要組件,包括 main 函數、MyApp 類別、MyHomePage 類別及其對應的狀態類別 _MyHomePageState。
本篇文章探討 Flutter 中的 Text 文字元件及其內部屬性。學習如何查看 Text 元件的原始碼,補充介紹位置參數與具名參數。
在這篇文章中,我們深入探討 Flutter 中的 Text 元件,這是一個用於顯示文字的基本組件。無論是純文字顯示、字體樣式的設定,還是多行顯示,Text 元件都能輕鬆應對。
本課程介紹了如何建立第一個 Flutter 應用程式。學習內容包括匯入 Flutter 套件、定義主函數、建立無狀態的 Widget 類別 MainApp,以及使用 Scaffold 和 Center 來組織 UI 元件。最終,學員能夠編譯並執行一個顯示「HKT 線上教室」的簡單應用程式。
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
在 Dart 程式語言中,函式不僅可以接收參數,還能為這些參數設定預設值。這樣的設計使得函式的呼叫更加靈活,並且簡化了程式碼的撰寫。本文將深入探討如何定義具有預設參數值的函式,並透過實際範例來加深理解。
在這篇文章中,介紹 Flutter 中的 StatefulWidget,並透過一個簡單的計數器應用程式來說明其結構與運作方式。文章涵蓋了應用程式的主要組件,包括 main 函數、MyApp 類別、MyHomePage 類別及其對應的狀態類別 _MyHomePageState。
本篇文章探討 Flutter 中的 Text 文字元件及其內部屬性。學習如何查看 Text 元件的原始碼,補充介紹位置參數與具名參數。
在這篇文章中,我們深入探討 Flutter 中的 Text 元件,這是一個用於顯示文字的基本組件。無論是純文字顯示、字體樣式的設定,還是多行顯示,Text 元件都能輕鬆應對。
本課程介紹了如何建立第一個 Flutter 應用程式。學習內容包括匯入 Flutter 套件、定義主函數、建立無狀態的 Widget 類別 MainApp,以及使用 Scaffold 和 Center 來組織 UI 元件。最終,學員能夠編譯並執行一個顯示「HKT 線上教室」的簡單應用程式。
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
在 Dart 程式語言中,函式不僅可以接收參數,還能為這些參數設定預設值。這樣的設計使得函式的呼叫更加靈活,並且簡化了程式碼的撰寫。本文將深入探討如何定義具有預設參數值的函式,並透過實際範例來加深理解。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
在開發應用程式時,經常會遇到需要調整圖片大小以節省空間或加快加載速度的情況。本教學將介紹如何使用 C# 語言來壓縮圖片並調整其大小,以便在應用程式中使用。
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
在日常中我們都會將很多事物定上了一個標籤,例如將商品標記價格,替孩子取姓名,公司上冠上職稱等等。 在Python中也有這種方法,就是字典的形式{ 'name' : 'crab', 'apple', 1000 }去呈現
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
在開發應用程式時,經常會遇到需要調整圖片大小以節省空間或加快加載速度的情況。本教學將介紹如何使用 C# 語言來壓縮圖片並調整其大小,以便在應用程式中使用。
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
在日常中我們都會將很多事物定上了一個標籤,例如將商品標記價格,替孩子取姓名,公司上冠上職稱等等。 在Python中也有這種方法,就是字典的形式{ 'name' : 'crab', 'apple', 1000 }去呈現