Flutter学习笔记之Dart语言

2019-11-12  本文已影响0人  青藤绿

1、变量声明
var 接收任何类型变量,但一旦赋值便不肯更改类型
dynamic 接收任何类型变量,赋值后可更改类型
final,const final只是要求变量在初始化后值不变,但通过final,我们无法在编译时(运行之前)知道这个变量的值;而const所修饰的是编译时常量,我们在编译时就已经知道了它的值,显然,它的值也是不可改变的。
2、函数
dart中函数可赋值给变量或者传参。
3、异步
Future 链式调用

//then:执行下一步
//delayed:延迟执行
//catchError:捕获错误
//whenComplete:无论成功失败都回调
//wait:等待多个任务都执行结束才继续
Future.wait([
  // 2秒后返回结果  
  Future.delayed(new Duration(seconds: 2), () {
    return "hello";
  }),
  // 4秒后返回结果  
  Future.delayed(new Duration(seconds: 4), () {
    return " world";
  })
]).then((data){
   //执行成功会走到这里  
   print("success");
}).catchError((e){
   //执行失败会走到这里  
   print(e);
}).whenComplete((){
   //无论成功或失败都会走到这里
});

async/await 使用同步的代码形式来执行异步任务

task() async {
   try{
    String id = await login("alice","******");
    String userInfo = await getUserInfo(id);
    await saveUserInfo(userInfo);
    //执行接下来的操作   
   } catch(e){
    //错误处理   
    print(e);   
   }  
}

Stream可以接收多个异步操作的结果(成功或失败)

Stream.fromFutures([
  // 1秒后返回结果
  Future.delayed(new Duration(seconds: 1), () {
    return "hello 1";
  }),
  // 抛出一个异常
  Future.delayed(new Duration(seconds: 2),(){
    throw AssertionError("Error");
  }),
  // 3秒后返回结果
  Future.delayed(new Duration(seconds: 3), () {
    return "hello 3";
  })
]).listen((data){
   print(data);
}, onError: (e){
   print(e.message);
},onDone: (){
});
//输出:
I/flutter (17666): hello 1
I/flutter (17666): Error
I/flutter (17666): hello 3
上一篇下一篇

猜你喜欢

热点阅读