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方法

猜你喜欢

转载自blog.csdn.net/dreams_deng/article/details/106960874