【從零開始學 Flutter 程式設計】起手式程式碼

【從零開始學 Flutter 程式設計】線上教學課程目錄 使用 Dart 程式語言,開發 Android 和 iOS APP 應用程式。
繼上一節課程「第一支 Flutter 應用程式 - Hello World」,這節我們來看一下,我們最常用的的一個起始專案程式碼。

起手式程式碼

在 Flutter 狀態分為兩種,一種是無狀態(StatelessWidget)和另一種有狀態(StatefulWidget)
  • 無狀態(StatelessWidget):
    初始化後都不會改變狀態的 widget,那就選擇 StatelessWidget
  • 有狀態(StatefulWidget):
    因 StatelessWidget 是靜態的,所以他初始化後,不會重新創建自己。反過來StatefulWidget 可以透過 setState 再一次重繪。

兩種狀態的選擇方式

  • 大部分都是使用 StatelessWidget,當您需要透過 setState 方式更新狀態時才需要採用 StatefulWidget 狀態
  • StatefulWidget 運算成本比較昂貴,勿濫用,若需使用盡量安排使用在末子節點上,且讓元件數量降至最少,減少降低系統重繪的成本。

快速完成程式碼

透過 stless 或 stful 關鍵字,快速生成程式碼,別傻傻的一個字一個字打。
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('HKT線上教室'),
      ),
      body: HomePage(),
    ));
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text("第一個APP"),
    );
  }
}

執行畫面

此套課程學習過程為了讓同學快速理解,HomePage 沒有獨立搬出去,實際應用檔案很多時,不會全部寫在同一支 dart 檔案裡,會依照功能邏輯頁面搬出去,如存到:home_page.dart。
命名風格
  • 檔案名稱:小寫用底線分隔,如:home_page.dart
  • 類別名稱:大駱駝方式,如:HomePage
另外 body 裡面的程式建議獨立出去一個 class ,若沒拉出去,部分元件,如:SnackBar、AlertDialog…等相關元件,會無法正常使用,詳細原因,會到該元件章節,再進一部說明。

波動拳程式

flutter 而容易,寫出「波動拳程式」,這樣的結構很容易降低程式碼「可讀性」、「易維護性」與「易擴展性」,應該盡量避免。

不好的程式結構範例

下方這段程式碼,與上面 KT 建議「起手式程式碼」,畫面一模一樣,一開始或許你會覺得,這樣寫起來比較順手,看起來也比較簡潔,但實際畫面元件一多時,全部都塞在 body,這樣的結構是不好的。KT 建議依照功能邏輯劃分出去。
import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('第一個APP'),
      ),
      body: Center(
        child: Text('HKT線上教室'),
      ),
    ),
  ));
}

那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)