美文网首页
Flutter学习-Dart学习

Flutter学习-Dart学习

作者: 刚刚8888 | 来源:发表于2022-07-03 12:54 被阅读0次

    1.var 赋值后类型确定
    2.Object 是Dart所有对象的根基类,也就是说所有类型都是Object的子类(包括Function和Null)
    3.dynamic的这个特性与Objective-C中的id作用很像.
    4.Dart是一种真正的面向对象的语言,所以即使是函数也是对象,并且有一个类型Function。这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征。
    5.包装一组函数参数,用[]标记为可选的位置参数,并放在参数列表的最后面
    6.注意,不能同时使用可选的位置参数和可选的命名参数
    7.Future与JavaScript中的Promise非常相似

    // 延迟执行
    Future.delayed(new Duration(seconds: 2),(){
       //return "hi world!";
       throw AssertionError("Error");
    }).then((data){
       //执行成功会走到这里 
       print(data);
    }).catchError((e){
       //执行失败会走到这里   
       print(e);
    }).whenComplete((){
       //无论成功或失败都会走到这里
    });
    
    // 同步
    Future.wait([
      // 2秒后返回结果  
      Future.delayed(new Duration(seconds: 2), () {
        return "hello";
      }),
      // 4秒后返回结果  
      Future.delayed(new Duration(seconds: 4), () {
        return " world";
      })
    ]).then((results){
      print(results[0]+results[1]);
    }).catchError((e){
      print(e);
    });
    

    8.使用async/await消除callback hell

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

    9.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: (){
    
    });
    

    相关文章

      网友评论

          本文标题:Flutter学习-Dart学习

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