Flutter/Dart (){} 和 () => 的差別

Flutter/Dart (){} 和 () => 的差別

Issue

Flutter 因為大量使用依賴注入,所以常常會需要傳入 Function。傳入 Function 時,常常會看到兩種寫法,一下是 () {} 寫法,另一個是 () => 寫法。我剛開始寫的時候被搞得頭昏腦脹,查了一下才發現這兩個本身沒什麼不同。

不同在哪

下面我用在寫 Flutter 中常見的創建一個有 10 個 Text 的 List 舉例。

創建一個有 10 項元素的 List:

List<Text> list = List.generate(10, (index) => Text(index.toString()));

上面就是輸出一個帶有 0-9 的 List,那現在假設我會需要再創建 Text 前,根據 index 來做一些改變,下面就做最簡單的平方。

List<Text> list = List.generate(10, (index) {
    // do some work
    var text = (index * index).toString();
    return Text(text);
});

觀察上面兩個例子,不難發現兩個的差別,第一個寫法 () => 後面直接接上一個表達式(Expression),當作回傳值。而 () {} 則是在大括號中寫一個完整的 Function,所以要寫一個 return。

Reference


TonyPepe
Made with Love in Taiwan
Copyright
2020 - 2023