美文网首页
Flutter学习笔记之Dart语言

Flutter学习笔记之Dart语言

作者: 青藤绿 | 来源:发表于2019-11-12 18:19 被阅读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
    

    相关文章

      网友评论

          本文标题:Flutter学习笔记之Dart语言

          本文链接:https://www.haomeiwen.com/subject/zwvqictx.html