iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Mobile Development

Flutter 30: from start to store系列 第 3

Dart語法簡介:型別和條件語句

  • 分享至 

  • xImage
  •  

今天我們稍微來認識一下Dart,大致上會包括

  • types
  • condition flow
  • function

好的,那我們就開始吧~


Primitive Types

  • 數字類 : int 整數, double 浮點數

    nt count = 1;
    ouble dollar = 3.0;
    ``
    
  • 字串類 : String 字串

    tring sayHello = "Hello!";
    ``
    
  • 布林: bool 布林值

    ool isGood = true; 
    ``
    
    
    

Advanced Types

  • List (array): 有序且內部元素可以重複的列表。List代表這是一個含有type型別的列表

    ist<int> list = [1,2,2,3]
    ``
    
  • Set: Set 集合,無排序且不能重複

    et<int> set = {1,2,3}
    ``
    
  • Map: key-value pairs,相當於javascript的key-value pair object, python的dictionary, java的hashMap

    ar priceMap = {
    'apple': 25,
    'orange': 20,
    'banana': 15
    
    ``
    
    

Others

  • Object:物件,是所有類別的父類別

  • enum:列舉型別(enumerative values)

    num Fruit {
     apple, 
     banana,
    
    ``
    
  • Iterable: 可迭代的類別,如可迭代的List是Iterable的子類

  • Future: 用於非同步行為,類似Promise

    uture<void> findData() {
    // return 'Data Found!' after 5 second
    return Future.delayed(Duration(seconds: 5), () => print('Data Found!'));
    
    ``
    
    
  • Never: 若預期一個表達式不會繼續執行下去(如拋出錯誤),回傳Never,詳情可見關於Never的探討

    ever isRequired(String property) {
     throw ArgumentError('$property is required.');
    
    ``
    
  • dynamic:可以是任何型別

    ynamic temp = 0;
    emp = 'Test';
    emp = false;
    ``
    
  • void:無任何值


Condition Flow

selection statement

  • 依照條件判斷的語法

  • if, else if, else

    f(weather == 'rainy'){
    useUnbrella();
     else if(weather == 'sunny'){
    useSunGlasses();
     else {
    justBeCool();
    
    ``
    
    
  • switch

    witch(weather){
    case 'rainy':
    	useUnbrella;
    	break;
    case 'sunny':
    	useSunGlasses();
    	break;
    default:
    	justBeCool();
    	break;
    
    ``
    
    

iteration statement

  • 迭代集合中每個元素的語法

  • while

    hile(!restTime){
    keepWorking();
    
    ``
    
  • do ... while

    o {
    working();
    
    hile(!restTime);
    ``
    
  • for, for in

    
    or(var i = 0; i< 10; i++){
    print(i);
    
    
    or(file in files){
    saveToLocal(file);
    
    ``
    
    
    

jump statement

  • break: 跳出當前的條件/迴圈
  • continue: 結束此輪迴圈,直接開始下一輪迴圈
  • return: 結束此function並回傳值

Function

positional parameter

  • flutter的基礎function 寫法如下:

    nt addTwoNumbers(int a, int b) {
    return a+b;
    
    ddTwoNumbers(1,2); // 3
    ``
    unction前面代表預期會回傳的值(int),addTwoNumber是function的名稱,`int a` `int b`是輸入的參數
    
    

optional positional parameter

  • 也可以自行設定optional的參數

    nt addNumbers(int number1, [int? number2, int? number3, int? number4]) {
      int sum = number1;
      if (number2!= null) {
    	  	sum = number1+number2;
      }
    
      if (number2!= null && number3!= null) {
        	sum = number1+number2+number3;
      }
    
      if (number2!= null && number3!= null && number4!= null) {
        	sum = number1+number2+number3+number4;
      }
      return sum;
    
    
    ddNumbers(1); 			// 1
    ddNumbers(1,2);	 	// 3
    ddNumbers(1,2,3);	 	// 6
    ddNumbers(1,2,3,4); 	// 10
    ``
    
    

named parameter

  • 另外,dart function中定義的parameter也可以指定parameter名稱,變成named parameter。而named parameter一般來說都是optional,除非加入required 關鍵字才會讓這個parameter變成function所必須

    nt addTwoNumbers({required int firstNumber, required int secondNumber}){
    return a+b;
    
    
    ddTwoNumbers(firstNumber=1, secondNumber=2); // 3
    ``
    
    
    

Recap

Dart常用的型別

  • int/double:數字類別
  • String:字串類別
  • bool:布林值
  • List:有序且可重複的集合
  • Set:無序且不可重複的集合
  • Map:key-value pairs

和條件語句

  • if / else if / else, switch
  • while, do...while, for, for ...in ...

以及function的寫法

[回傳類別] [function名稱] (參數型別 參數){
    作用域
}

String sayHiTo(String name){
    return 'Hi ${name}!';
}

明天一起來看看Dart的Class和一些preserved words代表的意思吧!


上一篇
跨平台技術與Flutter
下一篇
Dart語法簡介:Class和其他關鍵字
系列文
Flutter 30: from start to store30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言