Dart基礎語法歸納總結

 1. 安裝

  下載:Dart Update  或者 下載dart sdk環境變量即可 鏈接:https://pan.baidu.com/s/10jsPHVI-g-QCiutx45MTKg  提取碼:0p5r
  安裝vscode vscode 安裝dart 插件、Code Runner插件

2.  Dart 基礎語法

1. 字符串
2.  數組
3. set 集合
4. map 

  字符串:
   var str1="this is str1" 
   String str2= "tha is is  str2" 
   String str3= '''A
   B
   '''   //可以輸出直接保留行
   print("$str1 $str2")
   print(str1 + "  " + str2)

   if(str1 is String){  // 通過is 判斷類型 
        print(str1+str2  );     // 字符串拼接
   }

   
   // 空判斷
   if(str.isEmpty){}
   var mynum;
   if(mynum==null){}
   var mynum =0/0  返回
   if(mynum.isNaN){}
   
  int a=10 ;
  print(a);
  var myNum=12;
  print(myNum.toString());
  double d= 10.0; 
  
  bool flag= true;
 
List定義方式1:
  var list= ["aa","bb"];
  
  
  list.length
  list[0]
List定義方式2: 
  var list2= new List<String>();
  list2.add("bb");
  list2.addAll(["cc","dd"])
  lists2.indexOf("cc");
  lists2.remove("cc");
  lists2.removeAt(2);
  lists2.fillRange(1,3,"java");  // 修改2,3 元素爲java 
  lists2.insert(2,"oc");  //執行位置插入
  lists2.insertAll(2,["python","c"])
  lists2.join(",")  //轉化字符串join分隔
  lists2.joon(",").split(",") // 轉化爲數組
  
  for(var item in list){}  // for-in 
  var newList= list.forEach( (value){
   return value+"A";      // 修改集合數據
  })
  var newList =list.where( (value){  //過濾
     retrun value>5; 
  })
  var f = list.any((value){  //返回bool,集合中只要有大於5的返回true 
  return vlaue>5 
  }) 
  var f= list.every( (value){ // 集合中每一個都滿足條件
  return value> 5
  })
  
  
Set: 集合數據不能重複
 var  s= new Set(); 
 s.add("香蕉");
 s.toList() // 轉化爲List 
 s.addAll(["a","a","b"]) //集合去重
 
 
  
Map: 
  var person={
  
    "name":"xiaoming",
	"age":20,
	"work":["程序員","外賣"]
	}
	print(person["name"]);
	
	
	var map =new Map();
	map["name"]="xiaoming";
	map.keys.toList() // 獲取所有Key
	map.values.toList() // 獲取所有value 
	map.isEmpty  //是否爲空
	map.addAll({"son":"xiaoming"});  //增加屬性
	map.remove("name")  //根據key 刪除
    map.containsValue("xiaoming") //是否有某一個value 
    map.forEach((key,value)){}
	
	
	
	// 類型判斷
	var str4="1234";
	if(str4 is String){}
	else if(str4 is int){} 
	
	
類型轉化: 
  String str5 = "123";
  int.parse(str5);
  int a0= 10;
  a0.toSting()

5.  函數

 // 1.可選參數
 String printUserInfo(String username,[int age]){
 if(age!=null){
   return "$username--$age";
 } else{
   return "$username";
  }
 }
 printUserInfo("xiaoing");
 // 2.默認參數
 String printUserInfo1(String usernane,[int age,String sex='男']){
  
 }
 // 3.匿名參數
 String printUserInfo2(String username,{int age,String sex}){}
 printUserInfo2("xiaohei",age:20,sex="女");   實參必須和形參名稱一致
 // 4. 把方法單做參數
 fn1(){
 print("fn1")
 }
 fn2(fnName){
 fnName();
 }
 fn2(fn1);
 //5. 匿名方法
 var fn= (){ print("x") }
 fn();

6.  類 ,面向對象

 class Perosn{
  String name;
  int age;
  Perosn(this.name,this.age);
  void printInfo(){
   print("${this.name} -- ${this.age}");
  }
  Person.setInfo(String name,String age){
      this.name= name;
	  this.age= age ;
  }
 }
 void main(){
    Person p1= new  Person.setInfo("xiaoming",40);
	p1.printInfo();
 
 }
 
 // Dart中 沒有提供訪問修飾符 ,在屬性或者方法前面 加_ 表示私有的
 // 注意: 必須 放在一個 文件中把 類,否則無效
 // Dart 中在 屬性和方法 前面添加 static,就是 靜態屬性方法,通過類. 可以直接訪問
 // 注意: 非靜態方法可以訪問 靜態屬性、方法  , 靜態方法中不可以訪問 非靜態屬性、方法
 
 class BlackMan extends Perosn{
   BlackMan(String name,int age): super(name,age);   //調用父類的構造函數
 }
 
 // 抽象類
 abstract class Animal{
   eat();      //抽象方法
   printinfo(){   // 公共方法
     print("公共方法")
 
 }
 //  接口,Dart 中 沒有interface 定義接口,通過abstract定義類單做接口即可,但是可以通過implements實現
 abstract class Db{
 Strin url; 
   delete();
 }
 class mysql implements Db{}
  
 
 Dart多繼承: 
 mixins 中文意思是混入,就是類中混入其他功能
 dart中 可以使用 mixins 實現類似多繼承功能
 dart2.0 mixins規範:
 1. 作爲 mixins的類 只能繼承 object
 2. 作爲 mixins的類  不能有構造函數
 3. 一個類可以 mixins多個 類
class A {
  printA(){ print("A")}
}
class B {
  printB(){ print("B")}
}
class Person{ 
   String name;
   Perosn(this.name);
}
class C extends Person with A,B{    //通過 with 語法實現 mixins, 通過繼承具備 A,B 類功能
  Person(String name):super(name);
}
============================================================================= 
Dart 中泛型方法、類、接口
  提供類、方法的重用性代碼的
  T getDate<T>(T value){
  return value;
  }
  getDate<String>("AA");
  
class PrintClass<T>{
  
}

abstract class Cache<T>{}
classs FileCache<T> implements Cache<T>{}

7.  dart中庫   dart中庫 的主要三種:  庫,分裝的功能集合

 7.1. 自定義 庫: import '/lib/xxx.dart'

在lib下新建 Person.dart

import 'dart:io';

class Person{
    void show(){
     print("Person ... show"); 
    }
}
void show1(){
  print("show1");
}

hello.dart

import './lib/Person.dart' show show1 ;

void main(){
 // lib.Person person=new lib.Person();
  // person.show();
  show1();
}

  7.2. 系統內置庫:
  import 'dart:math'
  import 'dart:io'
  import 'dart:convert'

 print(max(10,30));

7.3.  pub包管理的系統庫: 

     https://pub.dev/packages
     https://pub.flutter.io.cn/packages
     https://pub.dartlang.org/flutter

如何使用第三方庫:

 1. 需要在自己項目根項目新建一個pubspec.yaml

 2. 在 pubspec.yaml 文件 配置 名稱、描述、依賴等信息

name: xxx
description: A new flutter mudule project.
dependencies:
  http: ^0.12.1

 3.  運行 pub get 獲取包下載本地, 保存會自動執行vscode中
 4.  項目中引入庫 import 'package:http/http.dart' as http; 看文檔使用

import 'dart:io';
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
import './lib/Person.dart' show show1 ;

void main() {
    var url = 'http://api.m.mtime.cn/PageSubArea/TrailerList.api';

  // Await the http get response, then decode the json-formatted response.
  var response = await http.get(url);
  if (response.statusCode == 200) {
    var jsonResponse = convert.jsonDecode(response.body);
    print(jsonResponse);
    var itemCount = jsonResponse['totalItems'];
    print('Number of books about http: $itemCount.');
  } else {
    print('Request failed with status: ${response.statusCode}.');
  }
}

8.async 和 await
  只有 async 方法才能使用 await 關鍵字調用 
async : 把方法變成異步
await : 等待異步方法執行

requestNet() async{
  String aa="abc";
  return aa; 
 }
void main() async{
    var  result=  await requestNet();
    print(result);
}

9.庫導入修飾符:

問題,如果引入Person1、Person2.dart 都有Person類 ,那麼會報錯
 import './lib/Person1.dart'
 import './lib/Person2.dart'
解決,重名了:
  lib.Person person=new lib.Person();
  person.show();
import './lib/Person.dart' show show1 ;    // 部分引入,只引入 show1方法
import './lib/Person.dart' hide show1 ;   // 隱藏Person.dart 中  show1方法

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