美文网首页
Flutter 学习基础 dart

Flutter 学习基础 dart

作者: Lucky_1122 | 来源:发表于2021-09-29 17:21 被阅读0次

var 赋值的时候确定类型 后面不能更改类型
Dynamic 可以接受任何类型 前面赋值一种类型 后面还可以修改类型
Object 基类 dart中都是类 可以接受任何变量

可选的位置参数 用[]标记为可选的位置参数,并放在参数列表的最后面

//定义
String say(String from, String msg, [String device]) {
}
//调用
say('Bob', 'Howdy'); 
say('Bob', 'Howdy', 'smoke signal');

可选的命名参数 定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数

//定义
void enableFlags({bool bold, bool hidden}) {
    // ... 
}
//调用
 enableFlags(bold: true, hidden: false);

\color{red}{注意,不能同时使用可选的位置参数和可选的命名参数}

Dart 是不支持多继承的,但是它支持 mixin,简单来讲 mixin 可以 “组合” 多个类
定义了几个 mixin,然后通过 with 关键字将它们组合成不同的类 多个mixin 中有同名方法,with 时,会默认使用最后面的 mixin 的,mixin 方法中可以通过 super 关键字调用之前 mixin 或类中的方法
mixin 多继承demo

class Person {
  say() {
    print('say');
  }
}

mixin Eat {
  eat() {
    print('eat');
  }
}

mixin Walk {
  walk() {
    print('walk');
  }
}

mixin Code {
  code() {
    print('key');
  }
}

class Dog with Eat, Walk{}
class Man extends Person with Eat, Walk, Code{}

\color{red}{Future} 一个异步操作的最终完成(或失败)及其结果值的表示
wait 数组内请求结束后在执行then whenComplete

Future.wait([
//delayed 模拟网络请求
      Future.delayed(Duration(seconds: 1), () {
        print("1111");
        return "111";
      }),
      Future.delayed(Duration(seconds: 1), () {
        print("2222");
        return "222";
      })
    ]).then((value) {
      print("value====$value");
    }).catchError((error) {
      print("error===$error");
    }).whenComplete(() {
      print('await finish');
    });

Future.delayed(Duration(seconds: 2), () {
      return 'hello $_counter';
      // throw AssertionError("Error");
    }).then((value) {
      print("value===$value");
    }, onError: (error) {
      print(error);
    }).catchError((e) {
      print("e==$e");
    }).whenComplete(() {
      print('finish');
    });

\color{red}{Future.then}解决嵌套地狱

//先分别定义各个异步任务
Future<String> login(String userName, String pwd){

    //用户登录
};
Future<String> getUserInfo(String id){

    //获取用户信息 
};
Future saveUserInfo(String userInfo){

    // 保存用户信息 
};

解决嵌套地狱的两种方式
方式一

login("alice","******").then((id){
    return getUserInfo(id);
}).then((userInfo){
    return saveUserInfo(userInfo);
}).then((e){
   //执行接下来的操作 
}).catchError((e){
  //错误处理  
  print(e);
});

方式二\color{red}{async/await }任务依赖(可以实现类似同步代码的方式实现异步)

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

*\color{red}{ async}用来表示函数是异步的,定义的函数会返回一个Future对象,可以使用 then 方法添加回调函数。

  • \color{red}{await} 后面是一个Future,表示等待该异步任务完成,异步完成后才会往下走;await必须出现在 async 函数内部

\color{red}{Stream 与 Future} 不同的是,它可以接收多个异步操作的结果,常用于会多次读取数据的异步任务场景,如网络内容下载、文件读写

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

});

相关文章

  • Flutter & Dart 基础

    以下主要是学习极客时间 Flutter 专栏相关学习记录。 Dart 基础 Online Dart iDE 核心特...

  • Dart基础(一)

    前言:笔者最近看了Flutter相关的内容,而Flutter的基础库是由Dart编写的,所以笔者学习了关于Dart...

  • Dart基础(二)

    前言:笔者最近看了Flutter相关的内容,而Flutter的基础库是由Dart编写的,所以笔者学习了关于Dart...

  • Flutter精品学习路线(干货知识分类+学习资料)

    Flutter学习路线 Dart 语言 在学习 Dart 语言前,若没有任何编程基础,建议先了解一下计算机基础知识...

  • 文章转载记录

    转自掘金-学习记录使用 Flutter 完整开发实战详解(一、Dart 语言和 Flutter 基础) Flutt...

  • Flutter系列(2)Dart语言基础

    Flutter的开发语言是Dart语言的,这篇文章就说说Dart语言基础 一、Dart 初体验 在flutter项...

  • Dart基础(一)

    级别: ★☆☆☆☆标签:「Flutter 」「Dart」「Dart基础类型」作者: WYW审校: QiShare...

  • Flutter - 从0到完成一个App(一)

    本文主要针对有Dart和Flutter基础的小伙伴,Dart和Flutter基础,废话不多说,开撸。 文件配置 1...

  • Flutter学习之Dart语言基础(1)

    Flutter日渐火爆,因此在进行Flutter学习前先学习一些其所使用的开发语言dart的基础,这篇文章主要学习...

  • flutter学习

    一: dart基础 二: flutter 三: vscode插件

网友评论

      本文标题:Flutter 学习基础 dart

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