Quantcast
Channel: 簡睿隨筆
Viewing all articles
Browse latest Browse all 897

02. 用IDEA快速建立第一支Flutter程式

$
0
0

Widget與「微件」?

Flutter使用Dart語言來開發,Dart語言最重要的概念是:一切都是物件(Everything is
Object);而Flutter的最重要概念則是:一切都是Widget(Everything is Widget)。

「Widget」通常譯為組件或部件,做為UI組成的最基本單位。而在剛剛落幕的2019年Google Developer Days上海站則出現了「微件」一詞,微件與Widget的發音類似,也能表達做為組成Flutter UI所有內容的含意,算是不錯的翻譯:smile:。

▼ Google的Flutter工程師雙人相聲影片:《Flutter如何渲染微件》;2019/9/10 Google Developer Days上海站

Dart語言的具名參數

在開始撰寫Flutter的App之前,必須先了熟悉Dart的具名參數(Named Parameters)。

通常在調用函數(或在類別裡稱為方法)時是以順序來傳參數,如下例100傳給n1,200傳給n2:

int add(int n1, int n2) {
  print("add parameter n1=" + n1.toString() + ", n2=" + n2.toString());
  return n1 + n2;
}

void main() {
  int total = add(100,200);
  print("total is " + total.toString());
}

但只要我們在add函數的引數列開頭與結尾加上大括號,便形成具名參數,在調用時必須指定參數名稱:

int function add({int n1, int n2}) {
  print("add parameter n1=" + n1.toString() + ", n2=" + n2.toString());
  return n1 + n2;
}

void main() {
  int total = add(n2: 200, n1: 100);
  print("total is " + total.toSting());
}

因為「一切都是物件」,因此print要顯示數值就要用.toString()這樣的方法:

print("Number Sample: " + 123.toString());
print("Boolean Sample: " + true.toString());

最簡單的Flutter程式

  • 目標:在手機螢幕上顯示文字。
  • 作法:
    1. 用runApp()載入傳入的Widget當做根Widget
    2. 用Text()顯示文字在App裡;textDirection就是具名參數
    3. Flutter裡建立物件的new可省略
void main() {
  runApp(Text("Hello, world. 哈囉,世界!!!", textDirection: TextDirection.ltr));
}

simple1

在IntelliJ IDEA或Android Studio裡操作的重點:
1. 在runApp上按〔Ctrl+Q〕顯示快速說明(Quick documentation)
2. 在runApp(參數裡按〔Ctrl+P〕顯示參數說明(Parameter Information)
3. 在Text上按〔Alt+Enter〕顯示可使用的動作(Context Actions)

置中文字並加上樣式

使用〔Alt+Enter〕再選用【Center widget】以插入Center Widget,再於Text加上第三個參數 style 即能變更顯示外觀:

void main() {
  runApp(Center(
      child: Text(
    "Hello, world. 哈囉,世界!!!",
    textDirection: TextDirection.ltr,
    style: TextStyle(color: Colors.red, fontSize: 30),
  )));
}

simple2

加上MaterialApp使用Material UI主題

將程式修改為使用MaterialApp Widget:

void main() {
  runApp(
      MaterialApp(
          title: "第一支Flutter App",
          home: Center(
              child: Text(
                "Hello, world. 哈囉,世界!!!",
                textDirection: TextDirection.ltr,
                style: TextStyle(color: Colors.red, fontSize: 30),
              )
          )
      )
  );
}

MaterialApp1

不是很美觀… 因為MaterialApp要再調用Scaffold(鷹架)才能組織出MaterialApp的外觀,如下我們就能建立一個簡單、完整的App了:

void main() {
  runApp(
      MaterialApp(
          title: "第一支Flutter App",
          home: Scaffold(
            appBar: AppBar(title: Text("第一支Flutter App")),
            body: Center(
                child: Text(
                  "Hello, world. 哈囉,世界!!!",
                  textDirection: TextDirection.ltr,
                  style: TextStyle(color: Colors.red, fontSize: 30),
                )
            ),
          )
      )
  );
}

materialApp2

實際操作影片


##

您可能也會有興趣的類似文章


Viewing all articles
Browse latest Browse all 897

Trending Articles