一.Hello World
1.主函数
void main(List<String> args){
}
2.导库
import
①标准库 import “dart:io”
②自定义 import “路径”
③Pub import “package:路径”
④show;hide;as;library;export
二.变量类型和数据类型
1.关键字:const/final/var
2.数据类型:object/dynamic/int/double/boolen/string
①const和final要在定义时赋值,不可改,const编译时,final运行时
②dynamic可跨数据类型赋值,其他不可
③真假值判断时必须为true或false,不可用其他类型代替
④’’/""/’’’ ‘’’
⑤$变量名 ${变量名} ${变量名.runtimeType}
⑥dynamic比object灵活
三.集合类型
1.List/Set/Map
①List < dynamic > args;Set < dynamic > args;Set < dynamic, dynamic > args
②List自动排序可重复,Set无序不可重复
③List.from(Set.from())
④for dynamic arg in List< dynamic > args
⑤打印List.foreach((item)=> print(item)) (匿名函数)
四.函数
1.箭头函数
2.必传参数 / 命名可选参数{} / 位置可选参数[]
①add(num1,num2) => nun1+num2
②默认参数必须为可选参数
③匿名函数
④词法作用域,向外查找
⑤闭包
main(List<String> args) {
add(num a) {
return (num b) {
return b + a;
};
}
var sum = add(2);
print(add(2)); //4
print(add(6)); //8
⑥参数可为函数
五.运算符
1.??=
2.??
3.级联运算符(…)
六.流程控制
七.类
1.构造函数
①语法糖
②命名构造函数(不支持函数的重载的解决办法)
class Person{
String name;
int age;
Person(this.name,this.age); //语法糖
Person.fromMap(Map<String,int> map){
this.name=map["name"];
this.age=map["age"];
} //Person person=Person.fromMap(Map<String,int> map);
}
③初始化列表
④重定向构造函数
class Rectangle{
double width;
double height;
double area;
Rectangle(this.width,this.height):this.area=this.width*this.height;
Rectangle.inputWidth(double width):this(width,0);
}
⑤常量构造函数
class Person {
final String name;
const Person(this.name);
}
Person perone=const Person("A");
Person pertwo=const Person("B");
identical(perone,pertwo) //True
⑥工厂构造函数
⑦setter和getter
2.继承
①extends
②override
③子类中赋值父类中的属性
class Animal{
int age;
Animal(this.age);
}
class Dog extends Animal{
string name;
Dog(this name,int age):super(age);
}
3.抽象类
①不能实例化
②定义抽象函数,继承的类必须重载覆写函数
abstract class Animal{
void eat();
}
4.隐式接口
①implements
②所有方法必须重新实现
5.Mixin
mixin Runner{
void running(){
print("running");
}
}
mixin Swimer{
void swimming(){
print("swimming");
}
}
class Person with Runner,Swimer{
}
5.泛型
class Location<T>{
T x;
T y;
Location(this.x,this.y);
}
Location lone=Location<int>(1,2);
Location ltwo=Location<double>(1.1,2.2);
T popFirst(List<T> list){
return list[0]
}
popFirst(List<int> list);
popFirst(List<double> list);