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  类型判断,转换类型
上一篇下一篇

猜你喜欢

热点阅读