學習 Flutter 系列(一):開發起點 - Dart 基礎全攻略

更新於 發佈於 閱讀時間約 9 分鐘
raw-image

想要學習 Flutter App開發,第一步就是掌握它的核心語言——Dart。Dart 是 Google 推出的現代化程式語言,專為高效構建應用程式而設計。它不僅語法簡單、功能強大,還包含許多獨特的語言特性,讓開發者能夠快速開發高效且具有彈性的程式碼。

在本篇文章中,我們將深入介紹 Dart 的核心基礎,包括基本語法、物件導向概念及其特殊語言特性,幫助你快速上手並為學習 Flutter 打下堅實基礎!


1. Dart 基本語法與內建類型

Dart 是一種強型別語言,但它也支援類型推斷,讓你在需要時可以靈活選擇顯式或隱式定義型別。以下是 Dart 的基本語法和內建類型:

Dart 的內建類型

Dart 提供了以下幾個常見的資料型別:

  • 數字類型:int(整數)和 double(浮點數)。
  • 字串:String,用於表示文字。
  • 布林值:bool,用於表示邏輯真值(true 或 false)。
  • 列表(List):類似陣列,用於存放一組有序數據。
  • 集合(Set):存放一組無序且不重複的數據。
  • 映射(Map):鍵值對結構,類似字典。

Dart 基本語法範例

void main() {

  // 數字類型

  int age = 25;

  double height = 5.9;


  // 字串

  String name = 'Flutter';


  // 布林值

  bool isLearning = true;


  // 列表

  List<int> numbers = [1, 2, 3, 4, 5];


  // 集合

  Set<String> colors = {'red', 'green', 'blue'};


  // 映射

  Map<String, int> scores = {'Math': 90, 'English': 85};


  print('Name: $name, Age: $age, Height: $height, Is Learning: $isLearning');

  print('Numbers: $numbers');

  print('Colors: $colors');

  print('Scores: $scores');

}


2. 變數、函式與物件導向基礎

Dart 是一種面向對象的程式語言,所有內容都是物件。從變數到函式,再到類與物件,我們來逐一介紹。

變數的定義

你可以使用 var、final 或 const 來定義變數:

  • var:自動推斷型別,可重新賦值。
  • final:只能賦值一次,但可以是運行時的值。
  • const:編譯時常量,值必須在編譯時確定。


Dart 語法範例

void main() {

  var name = 'Flutter'; // 自動推斷為 String

  final age = 25; // 不可變

  const pi = 3.14159; // 編譯時常量


  print('$name is $age years old. Value of pi is $pi.');

}


函式的定義

Dart 的函式支援具名參數和默認值,靈活度高。


Dart 語法範例

int add(int a, int b) {

  return a + b;

}


void greet({String name = 'Guest'}) {

  print('Hello, $name');

}


void main() {

  print(add(3, 5)); // 8

  greet(); // Hello, Guest

  greet(name: 'Flutter'); // Hello, Flutter

}


物件導向基礎

Dart 支援類和物件的定義,讓你能夠使用封裝、繼承、多型等面向對象的特性。


Dart 語法範例

class Person {

  String name;

  int age;


  Person(this.name, this.age);


  void introduce() {

    print('Hi, I am $name and I am $age years old.');

  }

}


void main() {

  var person = Person('Flutter', 3);

  person.introduce(); // Hi, I am Flutter and I am 3 years old.

}


3. Dart 的特殊語言特性

Dart 提供了一些獨特的語言特性,讓程式碼更加簡潔強大。

Records

Dart 3 引入了 record,可以用來存放多個值而不需要定義類。


Dart 語法範例

void main() {

  var record = ('Flutter', 3, true);

  print(record.$1); // Flutter

  print(record.$2); // 3

  print(record.$3); // true

}


Patterns

Dart 支援模式匹配,讓你能輕鬆解構資料結構。


Dart 語法範例

void main() {

  var (name, age) = ('Flutter', 3); // 解構

  print('Name: $name, Age: $age');

}


Enum

枚舉類型用於定義一組有意義的常量。


Dart 語法範例

enum Color { red, green, blue }


void main() {

  var favoriteColor = Color.green;


  switch (favoriteColor) {

    case Color.red:

      print('Red');

      break;

    case Color.green:

      print('Green');

      break;

    case Color.blue:

      print('Blue');

      break;

  }

}


Mixins

Mixins 允許你在類中混入其他類的功能,避免多重繼承的問題。


Dart 語法範例

mixin Flyable {

  void fly() => print('I can fly!');

}


class Bird with Flyable {}


void main() {

  var bird = Bird();

  bird.fly(); // I can fly!

}


4. Dart 的擴充方法(Extension Methods)

Dart 支援擴充方法,讓你可以為現有類型添加新功能,而不需要修改原始代碼。


Dart 語法範例

extension StringExtension on String {

  String greet() => 'Hello, $this!';

}


void main() {

  print('Flutter'.greet()); // Hello, Flutter!

}


5. 泛型:提高程式碼的重用性與類型安全性

泛型讓你可以在類或函式中使用不特定的型別,提升程式碼的靈活性和類型檢查安全性。

Dart 語法範例

class Box<T> {

  T content;


  Box(this.content);


  void show() {

    print('Content: $content');

  }

}


void main() {

  var intBox = Box<int>(123);

  var stringBox = Box<String>('Flutter');


  intBox.show(); // Content: 123

  stringBox.show(); // Content: Flutter

}


結語:Dart 是進入 Flutter 的基石

Dart 是學習 Flutter 的第一步,它不僅語法簡單,還具備許多現代化的語言特性,如 records、patterns、mixins 等,讓開發更加靈活。此外,泛型與擴充方法可以提升程式碼的重用性與可維護性。

學會 Dart,不僅能幫助你快速掌握 Flutter,也能讓你的程式開發能力更上一層樓!接下來,我們將深入探討 Flutter 的核心概念並實現第一個跨平台應用,敬請期待!

你準備好進入 Flutter 的世界了嗎?快來留言分享你的學習進度吧!


avatar-img
12會員
310內容數
留言
avatar-img
留言分享你的想法!

































































你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB