flutter從入門到精通一

Flutter 是 Google 開源的 UI 工具包,幫助開發者通過一套代碼庫高效構建多平臺精美應用,支持移動、Web、桌面和嵌入式平臺

file
flutter是基於dart語言開發的,我們將首先通過幾章節介紹下dart語言,再詳細的學習flutter

     1.dart裏面是有類型的,並且具有類型校驗校驗  ,如果不申明具體類名,而是用var,dart就會自動推斷變量類型
     2.dart變量名稱是區分大小的,name和Name是兩個不同的變量  
     3.dart數據類型(可以通過is關鍵字判斷類型):
     
  • 整形 int 浮點型:double double可以被賦值整形或者浮點型,但是int必須是整型。
  • 字符串 String
  • 布爾 bool
  • Lsit (數組)
  • Map (字典),類似於js中的對象
 //用var來定義變量,能定義任何變量,但是會自動推斷變量類型,一旦賦值給某個具體的變量類型後,變量類型不會發生變化了
// void表示沒有返回值,所有的dart代碼需要放在main方法裏面
//下面定義了一個數組,數組的增加是通過add()
void main(){
  var arr=new List();
  arr.add('張四');
  arr.add('張五');
  arr.add('張六');
  print(arr);
}

不同類型的變量,可以通過一些方法進行轉換類型,如下:

/**
 * 1,number和String類型之間的轉換
 * number=>String  toString()
 * String=>number parse()
 * 2,isEmpty:可以判斷字符串是否爲空
 */
  String str='123';
  int myNum=int.parse(str);
  // var myNum=double.parse(str);
    //dart中,打印信息用print,這個是全局方法,類似於js中的console.log()
  print(myNum is int);

file
**tips:如果預知代碼可能會出現bug,可以將代碼包在try-catch裏面,如下:

  String price='';
  try{
    var myNum=double.parse(price);
    print(myNum);
  }catch(err){
    print(0);
  }

dart中主要有三種集合類型:
List(類似js中的數組):

  • List屬性:

    • isEmpty:是否爲空
    • isNotEmpty:是否不爲空
    • reversed:數組翻轉
  • List方法:

    • add:增加元素,增加一個
    • addAll:增加元素,增加多個,傳入的是一個數組(主要的功能是拼接數組)
    • indexOf:查找某個元素的索引
    • remove:刪除某個元素
    • removeAt:刪除某個索引的元素
    • fillRange:修改
    • insert(index,value):指定位置插入數據
    • insertAll:插入多個數據

Set(去重,方法和List差不多,將Set轉化成List,通過toList())

  var list=['蘋果','香蕉','桃子','蘋果','香蕉','桃子','蘋果','香蕉','桃子'];
  var set=new Set();
  set.addAll(list);
  var list1=set.toList();

Maps:其類似於json,但是鍵名需要用引號引起來

var person={
     "name":"jack"
 }
  • 常用屬性:

    • keys:所有的鍵
    • values:所有的鍵值
    • isEmpty:
    • isNotEmpty:
  • 常用方法:

    • addAll:一次增加多個鍵值對
    • remove:

對於三個集合(List,Set,Map)有些公共的循環遍歷方法:

  • for-in
  • forEach():類似於es6中的forEach
  • map:類似於es6中的map
  • where:類似於es6中的filter
  • any:類似於es6中的some
  • every:類似於es6中的every

函數:包括系統函數+自定義函數

  • 系統內置的函數:比如print
  • 一個方法中是可以嵌套其他方法的,而且可以嵌套很多層,這時候需要注意方法的作用域,(方法裏面套方法,返回內部的方法,這就是閉包)
  • 給方法命名建議使用駝峯,首字母是小寫,給類命名也是駝峯,但是首字母需要大寫
  • 注意dart中的方法是沒有關鍵字function,這個要注意

*dart中的可選參數,需要將參數放在:[ ]

  • 箭頭函數只能寫一句話,和es6中的箭頭函數有點區別,
  • 方法的形參儘量加上類型
  • 全局變量:會常駐內存,容易污染全局
  • 局部變量:不會常駐內存,會被垃圾機制回收,不會污染全局
  • 如果想讓一個變量常駐內存,而且不污染全局,只能用閉包實現,閉包也是這個目的
class Person{
    String name;
  int age;
  // 構造函數,名字和類名一樣
  Person(name,age){
    this.age=age;
    this.name=name;
  }
  //上面有個簡寫的方法:
    //Person(this.name,this.age)

  getInfo(){
    return '$name--$age';
  }
}

main(){
  /**
   * 類(三大特性:封裝,繼承,多態),
   * 類需要放到main函數外面
   */
  Person p=new Person('唐凱震',25);
  print(p.getInfo());
}  

掃碼關注公衆號,有更多精彩文章等你哦

file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章