【Flutter 學習筆記】最基本的應用程式 Hello World 結構介紹

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

在前幾堂課中,我們已經逐步介紹了如何搭建 Flutter 開發環境,並學習了 Flutter 的核心程式語言——Dart。我們從零開始,學習了變數宣告、資料型別、運算符號、條件控制、迴圈、函數等基本語法,掌握了 Dart 的核心概念。

如果你對這些內容還不熟悉,建議先回去複習之前的課程。今天,我們將延續這個主題,學習如何建立第一個 Flutter 應用程式。如果你不確定如何從零開始建立一個全新的 Flutter 應用程式,或是如何將程式編譯並佈署到模擬器或手機上進行測試,請先回去複習之前的課程,這裡就不再贅述。

使用 Empty Application 範本建立全新 Flutter 應用程式

raw-image

當我們選擇 Application 範本來建立 Flutter 應用程式時,會自動附帶一個計數器的功能。如果選擇的是 Empty 範本,則會得到一個最基本的 Flutter 應用程式結構——Hello World。

Hello World 程式

import 'package:flutter/material.dart';

void main() {
runApp(const MainApp());
}
/*
Youtube 搜尋 : HKT 線上教室
訂閱/按譖/分享/加入會員
🇹🇼 支持創作更多教學 🇹🇼
*/
class MainApp extends StatelessWidget {
const MainApp({super.key});

@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text('HKT線上教室'),
),
),
);
}
}

按下快捷鍵 F5,即可編譯並執行程式碼,並在選擇的裝置上看到執行結果。

raw-image


接下來,我們來看看這個最基本的應用程式結構。


1. 匯入 Flutter 套件

import 'package:flutter/material.dart';

這行程式碼是用來匯入 Flutter 的 Material 套件。Material 套件是 Flutter 的 UI 設計套件,提供了許多現代化且美觀的 UI 元件。如果你對這些元件感興趣,可以到官方網站查詢更多資訊。

如果我們不匯入 Material 套件,會看到許多紅色波浪線,表示找不到相關的套件。此時,我們可以將鼠標移到紅色波浪線上,並在提示區選擇快速修復,或使用快捷鍵(Windows: Ctrl + . / macOS: Command + .)來自動匯入 Material 套件。

2. 主函數

void main() {
runApp(MainApp());
}

main 函數是程式的進入點,也是 Flutter 應用程式的啟動點。runApp 函數是 Flutter 提供的用來啟動應用程式的函數,括號內需要傳入一個 Widget 元件。

3. 定義 MainApp 類別

class MainApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Text('HKT 線上教室'),
),
),
);
}
}

在這裡,我們定義了一個 MainApp 類別,並繼承自 StatelessWidget。StatelessWidget 是用來建立無狀態的 Widget,這意味著這個 Widget 不會有任何狀態變化或互動事件。

如果需要建立有互動事件的 Widget,則應該繼承自 StatefulWidget。在這個例子中,由於我們的應用程式只是顯示純文字,並不需要互動,因此選擇 StatelessWidget。

4. build 方法

StatelessWidget 必須實作 build() 方法來定義 UI 結構。在 build 方法中,我們返回一個 MaterialApp Widget,這是用來建立一個 Material Design 的應用程式。

5. Scaffold 和 Center

Scaffold(
body: Center(
child: Text('HKT 線上教室'),
),
)

MaterialApp 的 home 參數指定了 Scaffold,而 Scaffold 提供了一個基本的應用程式框架結構,包括 AppBar、底部導航列、抽屜選單等。在 Scaffold 的 body 參數中,我們使用 Center Widget,這可以將子元件(即 child 參數指定的 Widget)放在畫面的正中央。

6. Text Widget

Text('HKT 線上教室')

在這裡,我我們使用 Text Widget 來顯示文字。你可以將文字內容更改為任何你想要的字串,例如「HKT 線上教室」。這樣的設計讓我們能夠輕鬆地在應用程式中顯示靜態文字。

7. Widget 樹狀結構

整個應用程式的結構可以視為一個巢狀的 Widget 樹狀結構,這在 Flutter 中是非常常見的。我們可以這樣理解:

  • MaterialApp 的 home 參數指定了 Scaffold。Scaffold 的 body 參數指定了 Center。Center 的 child 參數則是用來指定要顯示的元件內容,即 Text。

這樣的結構讓我們能夠清晰地組織和管理應用程式的 UI 元件。

總結

今天的課程中,我們學習了 Flutter 最基本的應用程式結構,並逐步拆解了每個部分的功能與用途。從匯入套件、定義主函數、建立 Widget 類別,到使用 Scaffold 和 Center,每一步都為我們的應用程式奠定了基礎。

avatar-img
11會員
244內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
在 Dart 程式語言中,函式不僅可以接收參數,還能為這些參數設定預設值。這樣的設計使得函式的呼叫更加靈活,並且簡化了程式碼的撰寫。本文將深入探討如何定義具有預設參數值的函式,並透過實際範例來加深理解。
在 Dart 程式語言中,函式不僅能執行特定任務,還能回傳值,這使得函式在程式中更具彈性和重用性。本篇文章將深入探討如何定義一個具有回傳值的函式,並透過實際範例來幫助大家理解其結構與用途。
本文介紹了 Dart 中具有參數的函式。具有參數的函式允許靈活地處理不同輸入,增強程式碼的模組化和可重用性。透過範例說明,讀者能夠理解如何定義和使用這些函式,並掌握進階概念以提升程式設計能力。
本文介紹了 Dart 中基本函式的定義與使用,透過範例 sayHi 函式展示如何輸出訊息,並說明了函式的結構與呼叫方式。旨在幫助讀者理解函式的基本概念。
本文介紹 do...while 迴圈使用方式,它能確保程式碼至少執行一次的迴圈控制結構。
在 Dart 程式語言中,除了位置參數和預設參數值外,具名參數的使用讓函式的呼叫變得更加清晰且易於理解。特別是在參數較多的情況下,具名參數的優勢尤為明顯。本篇文章將深入探討如何定義和使用具名參數,並透過實際範例來加深讀者的理解。
在 Dart 程式語言中,函式不僅可以接收參數,還能為這些參數設定預設值。這樣的設計使得函式的呼叫更加靈活,並且簡化了程式碼的撰寫。本文將深入探討如何定義具有預設參數值的函式,並透過實際範例來加深理解。
在 Dart 程式語言中,函式不僅能執行特定任務,還能回傳值,這使得函式在程式中更具彈性和重用性。本篇文章將深入探討如何定義一個具有回傳值的函式,並透過實際範例來幫助大家理解其結構與用途。
本文介紹了 Dart 中具有參數的函式。具有參數的函式允許靈活地處理不同輸入,增強程式碼的模組化和可重用性。透過範例說明,讀者能夠理解如何定義和使用這些函式,並掌握進階概念以提升程式設計能力。
本文介紹了 Dart 中基本函式的定義與使用,透過範例 sayHi 函式展示如何輸出訊息,並說明了函式的結構與呼叫方式。旨在幫助讀者理解函式的基本概念。
本文介紹 do...while 迴圈使用方式,它能確保程式碼至少執行一次的迴圈控制結構。
你可能也想看
Google News 追蹤
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
有沒有想過,即使沒有任何編程背景,你的創意也能在六個月內轉化成真實的App?我可以以自身經歷跟你說有了 No-Code Tool (無代碼工具) 和 AI 的幫助,這一切都是可能的!你一行 code 都不需要打,甚至也無須學習任何編程語言!沒有什麼比實踐一個自小認為不可能的任務還振奮人心的事了!
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
有沒有想過,即使沒有任何編程背景,你的創意也能在六個月內轉化成真實的App?我可以以自身經歷跟你說有了 No-Code Tool (無代碼工具) 和 AI 的幫助,這一切都是可能的!你一行 code 都不需要打,甚至也無須學習任何編程語言!沒有什麼比實踐一個自小認為不可能的任務還振奮人心的事了!