dart语法
2020-02-09 本文已影响0人
匠人plus
变量
Object,dynamic
所有的东西都是对象,所有的对象都继承自Object类。
dynamic是动态类型。
Dart 没有 public、private、protected 这些关键字,变量名以"_"开头意味着对它的 lib 是私有的。
没有初始化的变量都会被赋予默认值 null。
常量的定义:final、const
其他数据类型:num,String,bool
方法
可选参数[]
参数有默认值需要{}
int add(int age1,[int age2]){
return age1 = (age2!=null?age2:0);
};
int add2({int age1,int age2 =1}){
return age1 = (age2!=null?age2:0);
};
print(add(1,2));
print(add(3));
print(add2(age1: 4,age2: 3));
类
默认情况下是单继承,使用with关键词可以多继承,
如果混合类中有同名方法,最后继承的类的方法会覆盖之前的同名方法,如果当前类中有该方法,以当前类中的为准。
abstract抽象类
class Person{
String name;
int age;
Person(this.name, this.age);
void sayHello(){
print(toString());
}
@override
String toString() {
return 'Person{name: $name, age: $age}';
}
}
class Worker extends Person with Eat,Sleep{
int birthday ;
Worker(String name, int age,int birthday) : super(name, age){
this.birthday = birthday;
}
void sayHello(){
print(toString());
}
@override
String toString() {
return 'Worker{name: $name, age: $age, birthday: $birthday}';
}
}
class Eat{
void eat(){
print('eat');
}
}
class Sleep{
void sleep(){
print('sleep');
}
}
Person person = new Person('hh', 11);
person.sayHello();
Worker worker = new Worker('xx', 12, 1234);
worker.sayHello();
worker.eat();
worker.sleep();
异步处理
void a1() async{
print('aaaa1');
Future.delayed(new Duration(seconds: 5),(){
print('aaaa');
});
Future.wait([
Future.delayed(new Duration(seconds: 2),(){
print('aaaa2');
}),
Future.delayed(new Duration(seconds: 3),(){
print('aaaa3');
}),
]).then((List results){
print('finish');
});
}
运算符
### / 带小数点
### ~/ 带小数点
### == 判断的值是否相同
### identical 判断应用一样不一样的
### ??= 给null赋值,若这个参数==null,那么就=后面的这个数
### => 等同{}
### .. 简便实现链式调用
### ?. 值为null的话不报错
### is、is!、as 类型判断,转换类型