get

  1. 什麼是 Getter (get)? Getter 讓你可以像存取一般變數一樣去取得資料,但背後其實執行了一段程式碼(或回傳某個運算結果)。

例如,在一個普通的類別中,你可以這樣寫:

1
2
3
4
5
6
7
8
9
10
11
12
class User {
  String firstName = 'John';
  String lastName = 'Doe';

  // 這是一個 getter,用來組合全名
  String get fullName => '$firstName $lastName';
}

void main() {
  var user = User();
  print(user.fullName); // 輸出 'John Doe'(注意:呼叫時不需要加括號像函式一樣)
}

  1. 為什麼後面只有分號 ;? 當 get 後面直接接分號(沒有大括號 {} 和回傳值),它就是一個抽象 Getter。

情境:通常用於定義狀態管理(例如 BLoC、Cubit 或 ViewModel)或抽象介面。

含意:「我這個類別不決定 error 裡面要裝什麼,但我規定所有繼承我的子類別,都必須實作這個 error 屬性,讓外界可以讀取錯誤訊息。」

子類別實作範例:

// 抽象類別
abstract class FormState {
  String? get error; // 抽象 getter
}

// 子類別必須實作它
class LoginFormState extends FormState {
  @override
  String? get error => '密碼錯誤'; // 具體實作
}

get:定義一個唯讀的屬性,透過運算或回傳內部狀態來提供資料。

String?:型態為可為空的字串(Nullable String)。

結尾的 ;:代表這是抽象定義,規定子類別一定要實作這個屬性。

results matching ""

    No results matching ""