上一堂課我們示範如何建立第一支 Dart 程式,接下來要手把手教你自行撰寫 Hello World 範例。
1 Hello World
- Dart 程式必須具備頂層
main()函式,程式會從此處開始執行 - 沒有回傳值的函式要標註
void print()用於在主控台輸出文字
// 程式進入點
void main() {
print('Hello, World!');
}
Code language: Dart (dart)
延續上一堂課建立的專案,開啟路徑 C:\dartdemo\firstdart\bin 底下的 firstdart.dart 檔案
將檔案內的程式碼替換成上方範例

接著開啟 CMD,切換至 C:\dartdemo\firstdart 目錄,執行 dart run 指令
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hello, World!Code language: CSS (css)
2 變數(var 自動推斷型別)
- 使用
var宣告變數,Dart 會依據賦值內容自動判斷型別,不用手動標註型別名稱 - 支援字串、整數、浮點數、陣列、字典(物件)等資料型別
範例
// 程式進入點
void main() {
var name = '旅行者一號'; // 字串 String
var year = 1977; // 整數 int
var width = 3.7; // 浮點數 double
var planets = ['木星','土星']; // 陣列 List
var info = {
'tag': ['土星'],
'url': '圖片網址'
}; // 字典 Map
}
Code language: Dart (dart)
上面我們宣告了數個變數,變數的用途是存放資料,概念上等同一塊記憶體空間,我們替這塊空間取一個名稱,後續就能透過名稱操作該記憶體。
記憶體本質上只能存放由 0、1 組成的二進位資料,電腦所有資訊都由 0 與 1 構成。之所以會區分出字串、整數等不同型別,是為了方便程式解讀資料;例如編譯器辨識為 int 時,就會以整數規則讀取這段記憶體內容。
如果要操作上面宣告的變數,可以參考以下寫法
// 程式進入點
void main() {
var name = '旅行者一號'; // 字串 String
var year = 1977; // 整數 int
var width = 3.7; // 浮點數 double
var planets = ['木星', '土星']; // 陣列 List
var info = {
'tag': ['土星'],
'url': '圖片網址'
}; // 字典 Map
// 字串操作範例
print('探測器名稱:$name');
print('名稱長度:${name.length}');
print('是否包含「號」字:${name.contains('號')}');
// 整數操作範例
print('發射年份:$year');
print('至今已過:${DateTime.now().year - year} 年');
// 浮點數操作範例
print('探測器寬度:$width 公尺');
print('寬度平方:${width * width}');
// 陣列操作範例
print('目標行星清單:$planets');
planets.add('天王星'); // 新增陣列元素
print('更新後行星清單:$planets');
print('第一個目標:${planets[0]}');
// 字典操作範例
print('分類標籤:${info['tag']}');
print('圖片網址:${info['url']}');
info['status'] = '運行中'; // 新增鍵值配對
print('完整資訊:$info');
}
Code language: PHP (php)
範例當中使用了格式化輸出,這部分內容後續會詳細說明,讀者先簡單看懂即可。
3 流程控制敘述(判斷 / 迴圈)
if else 判斷式
程式會依據 if 後括號內的條件執行對應程式區塊;若條件成立(true),執行 if 大括號內程式,不成立則執行 else 內的程式。

if (條件) {
// 條件為 true 時執行此區塊
} else {
// 條件為 false 時執行此區塊
}Code language: JavaScript (javascript)
舉例:判斷車輛是否超速,寫法如下。
var speed = 25;
if (speed > 60) {
print('超速囉!');
} else {
print('行駛速度正常。');
}Code language: PHP (php)
也可以連續多層條件判斷
if (speed > 100) {
print('危險超速!');
} else if (speed > 60) {
print('速度偏快。');
} else {
print('安全行駛。');
}Code language: PHP (php)
void main() {
var year = 1977;
if (year >= 2001) {
print('21世紀');
} else if (year >= 1901) {
print('20世紀');
}
}
Code language: Dart (dart)
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
20世紀Code language: CSS (css)
for 走訪陣列(for-in)
在 Dart 中,for‑in 是簡潔的迴圈語法,專門用來逐一走訪 List、Set 或是其他可迭代物件。
會持續檢查陣列/清單是否還有下一個元素,有元素就執行大括號內程式,無剩餘元素則離開迴圈,執行後續程式。
語法格式如下:
for (var item in collection) {
// 使用 item 變數操作當前元素
}Code language: JavaScript (javascript)

實際範例
void main() {
var planets = ['木星','土星'];
for (final item in planets) {
print(item);
}
}
Code language: Dart (dart)
執行輸出結果
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
木星
土星Code language: CSS (css)
一般數值 for 迴圈
範例從 i=1 開始執行,條件 i <=12 代表包含數字12;每次執行完 print 後,會執行 i++ 遞增變數。
void main() {
for (int i = 1; i <= 12; i++) {
print(i);
}
}Code language: JavaScript (javascript)

執行輸出結果
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
1
2
3
4
5
6
7
8
9
10
11
12Code language: CSS (css)
- 先執行 int i = 1 初始化變數
- 接著判斷條件 i <=12 是否成立
- 條件成立則執行 print(i),輸出數字 1
- 隨後執行 i++,i 數值變為 2
- 再次判斷 i<=12,2<=12 為 true,繼續執行 print(i) 輸出 2
- 重複執行 i++ 與條件判斷流程
- ……持續重複
- 直到 i 等於13時,i<=12 條件不成立,直接離開 for 迴圈,執行後續程式
其中 int i=1; 僅在迴圈一開始執行一次,後續迭代不會重複執行;這段程式的作用僅為賦予 i 初始值,也可以改寫成下方格式
void main() {
int i = 1;
for (; i <= 12; i++) {
print(i);
}
}
Code language: Dart (dart)
4. while 迴圈
while 迴圈概念與 for 迴圈相近,在 Dart 中,while 迴圈會在條件成立時持續重複執行同一區塊程式,語法十分簡潔:
while (條件) {
// 迴圈主體程式
}Code language: JavaScript (javascript)
執行流程:
- 先判斷括號內條件是否為
true。 - 若條件成立,執行迴圈主體。
- 執行完畢後再次檢查條件。
- 當條件變為
false時,結束迴圈。
想要讓迴圈正常結束,必須在迴圈內修改相關變數,使條件最後變成 false;若沒有修改變數,會造成無限執行的死迴圈。
var year = 2010;
while(year < 2016){
year += 1;
}
Code language: JavaScript (javascript)
以上程式拆解為完整執行步驟 👇
初始化階段
- 宣告變數
year,初始數值設定為2010。
條件判斷階段
- 檢查
year < 2016是否成立。 - 成立則進入迴圈主體;不成立則直接跳出迴圈。
執行迴圈主體
- 執行
year += 1,等同year = year + 1。 - 每一次迴圈都會將
year數值加一。
重複判斷流程
- 重新檢查條件
year < 2016。 - 當
year數值落在 2010~2015 時,條件皆成立。 - 當
year增加至 2016 時,條件不成立,迴圈終止。
執行結束階段
- 迴圈結束後,
year最終數值為 2016。
這個迴圈總共執行 6 次(年份 2010 至 2015),每次將 year 加一,直到條件不成立為止。務必留意,若迴圈內沒有更新 year 的數值,程式會陷入無限迴圈。