方法

Dart下????=属于操作符,如:AA ?? "999"表示如果AA为空,返回999;AA ??="999" 表示如果AA为空,给AA设置为999。

Dart方法可以设置*参数默认值*和*指定名称*。比如:getDetail(String userName,reposName,{branch = "master"}{}方法,这里branch不设置的话,默认是master。参数类型可以指定或者不指定。调用效果:getRepositoryDetailDao("aa","bb",brance:"dev");

Dart不像Java,没有关键词public、private等修饰符,_下横线直接代表private,但是有@protected注解。

Dart中多构造函数,可以通过如下代码实现。默认构建方法只能有一个,而通过Model.emptu()方法可以创建一个空参数的类,其实方法名称随你喜欢。而变量的初始化值,只需要通过this.name构造方法中指定即可:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class ModelA {
  String name;
  String tag;
  
  //默认构造方法,赋值给name和tag
  ModelA(this.name, this.tag);

  //返回一个空的ModelA
  ModelA.empty();
  
  //返回一个设置了name的ModelA
  ModelA.forName(this.name);
}

asyc/await

Flutter 中支持 async/await。这一点和 ES7 很像,如下代码所示,只是定义的位置不同。同时异步操作也和 ES6 中的Promise 很像,只是 Flutter 中返回的是 Future 对象,通过 then 可以执行下一步。如果返回的还是 Future 便可以 then().then.() 的流式操作了 。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
   ///模拟等待两秒,返回OK
  request() async {
    await Future.delayed(Duration(seconds: 1));
    return "ok!";
  }

  ///得到"ok!"后,将"ok!"修改为"ok from request"
  doSomeThing() async {
    String data = await request();
    data = "ok from request";
    return data;
  }

  ///打印结果
  renderSome() {
    doSomeThing().then((value) {
      print(value);
      ///输出ok from request
    });
  }