美文网首页
Dart基础知识 2022-05-13 周五

Dart基础知识 2022-05-13 周五

作者: 勇往直前888 | 来源:发表于2022-05-13 11:15 被阅读0次

变量

  • 变量用var修饰;

  • 常量用const修饰;也可以用final修饰

  • Object是根基类

  • dynamic要注意,编译时不会报错;运行时如果访问了不存在的属性,会崩溃(运行时错误)

  • 空值用null表示;

  • ?表示可以为空的值,相当于Swift中的可选类型。可空类型在用之前必须先判空。

  • 不带?的为非空类型,用之前必须初始化。关键字late表示稍后初始化。

  • 带?的可空类型,如果已经判空,在保证不空的情况下,可以用!强制解包。这个Swift中的!语义相同。

  • 函数后面加个?表示可选链,与Swift中的意思一样。(存在就执行,不存在什么也不干)

函数

  • 函数也是对象,类型是Function。可以赋值给变量,也可以当做参数传递。

  • 如果不显示指明,函数返回值默认是dynamic

  • 对于只包含一个表达式的函数,可以用 =>

  • 包装一组函数参数,用[]标记为可选的位置参数,并放在参数列表的最后面。(中括号)

  • 定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。(大括号)

  • 不能同时使用可选的位置参数和可选的命名参数。(中括号大括号只能选一个,或者都不选)

mixin

  • Dart 是不支持多继承的,但是它支持 mixin,简单来讲 mixin 可以 “组合” 多个类

  • 我们定义了几个 mixin,然后通过 with 关键字将它们组合成不同的类。

  • 如果多个mixin 中有同名方法,with 时,会默认使用最后面的 mixin 的

异步支持

  • Dart类库有非常多的返回Future或者Stream对象的函数。 这些函数被称为异步函数

  • Future与JavaScript中的Promise非常相似,表示一个异步操作的最终完成(或失败)及其结果值的表示。

  • Future 的所有API的返回值仍然是一个Future对象,所以可以很方便的进行链式调用。

  • Future.then,Future.catchError,Future.whenComplete,Future.wait与Promise中的then,error,final,all等方法对应

  • Dart中的async/await 和JavaScript中的async/await功能是一样的:异步任务串行化。

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

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

  • 无论是在 JavaScript 还是 Dart 中,async/await 都只是一个语法糖,编译器或解释器最终都会将其转化为一个 Promise(Future)的调用链。

Stream

  • Stream 也是用于接收异步事件数据,和 Future 不同的是,它可以接收多个异步操作的结果(成功或失败)。

  • Stream 常用于会多次读取数据的异步任务场景,如网络内容下载、文件读写等。

参考文档

Flutter实战·第二版

语言概览

相关文章

网友评论

      本文标题:Dart基础知识 2022-05-13 周五

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