Dart 方方面面
文章平均质量分 87
逐个击破知识点,全方位理解Dart
itzyjr
Stay hungry,Stay foolish!
展开
-
▩Dart-异步编程:futures,async,await
目录一、为什么异步代码很重要二、什么是`future`?未完成(Uncompleted)和已完成(Completed)三、使用`future`:`async`和`await``async`和`await`的执行流程四、处理异常五、练习:将全部柔和在一起六、更多文章涵盖如下知识点:如何以及什么时候使用async和await关键字。如何使用async和await来影响执行顺序。如何使用try-catch处理异步调用异常。一、为什么异步代码很重要异步操作允许程序在等待另一个操作完成时完成工作。以下原创 2022-02-03 16:40:46 · 2383 阅读 · 0 评论 -
▩Dart-生成器函数
目录零、yield与yield*关键字一、多元素同步[生成器]二、单元素异步[生成器]三、多元素异步[生成器]当你需要延迟生成(lazily produce)一系列值时,可以考虑使用生成器函数。类别关键字返回类型搭档多元素同步sync*Iterable<T>yield、yield*单元素异步asyncFuture<T>await多元素异步async*Stream<T>yield、yield* 、await我们原创 2022-01-24 04:54:26 · 946 阅读 · 0 评论 -
▩Dart-异常Exception(捕获/抛出/自定义)
目录一、Exception类一、内置异常二、捕获异常:try / on / catch / on...catch及finally 块三、抛出异常四、自定义异常一、Exception类Exception class API由所有核心库异常实现的标记接口。异常旨在向用户传达有关故障的信息,以便以编程方式解决错误。它旨在被捕获,并且应该包含有用的数据字段。Creating instances of Exception directly with Exception(“message”) is disco原创 2022-01-24 03:09:18 · 1887 阅读 · 0 评论 -
▩Dart-Iterable<E>类
目录一、概述二、子类三、可用的扩展四、构造函数五、成员属性六、方法七、运算符八、静态方法本文是自己翻译的,来源:Iterable<E> classIterable<E> class (Null safety)可以按顺序访问的值或“元素”的集合。一、概述通过使用iterator getter获取Iterator,并使用它逐步遍历值,达到访问iterable的元素的目的。使用迭代器单步执行是通过调用iterator.moveNext,如果调用返回true,则迭代器现在已移动到下原创 2022-01-24 01:40:45 · 1899 阅读 · 0 评论 -
▩Dart-可迭代集合
目录一、什么是集合(collections)?二、什么是迭代器(Iterable)?三、读取元素示例1:使用for-in循环示例2:使用first和last示例3:使用firstWhere()示例4:练习编写测试谓词四、检测条件示例1:使用any()和every()示例2:验证Iterable满足条件五、过滤示例1:使用where()示例2:使用takeWhile示例3:过滤list中的元素六、映射(Mapping)示例1:使用map修改元素示例2:映射(Mapping)到不同的类型七、示例——将全部内容归原创 2022-01-24 00:27:19 · 677 阅读 · 0 评论 -
▩Dart-Extension方法
目录一、概述二、使用扩展方法1. 静态类型和dynamic2. API冲突三、实现扩展方法四、实现泛型扩展五、更多Dart 2.7中引入的扩展方法是向现有库添加功能的一种方法。你可能会在不知情的情况下使用扩展方法。例如,当你在IDE中使用代码完成时,它建议使用扩展方法和常规方法。一、概述当你使用其他人的API或实现广泛使用的库时,更改API通常是不切实际或不可能的。但你可能仍然希望添加一些功能。例如,考虑将字符串解析成整数的以下代码:int.parse('42')将该功能放在字符串上可能会更好原创 2022-01-23 22:33:57 · 1613 阅读 · 0 评论 -
▩Dart-数字——Native&Web
目录一、数的表示二、行为上的差别1. 精度2. 身份标识3. 类型和类型检测4. 位运算5. 字符串的表示三、Native与Web差异,该怎么做?Dart应用程序通常针对多个平台。例如,Flitter应用程序可能以iOS、Android和web为目标。代码可以是相同的,只要应用程序不依赖于特定于平台的库或以依赖于平台的方式使用数字。本章详细介绍了Native number和Web number实现之间的差异,以及如何编写代码以使这些差异无关紧要。Dart和其他语言中的数字实现出于性能、代码大小和平原创 2022-01-23 21:38:54 · 1884 阅读 · 0 评论 -
▩Dart-深入理解空安全
目录一、概述二、类型系统中的可空性三、非空和可空类型四、使用可空类型五、顶层及底层六、确保正确性七、流程分析八、可达性分析九、为不可达的代码准备的`Never`十、绝对的赋值分析十一、空检查的类型提升十二、无用代码的警告十三、与可空类型共舞一、概述自 Dart 2.0 替换了静态可选类型系统为 健全的静态类型系统 后,空安全是我们对 Dart 作出最大的改变。在 Dart 初始之际,编译时的空安全是一项少有且需要大量时间推进的功能。时至今日,Kotlin、Swift、Rust 及众多语言都拥有他们自己的原创 2022-01-22 20:15:46 · 477 阅读 · 0 评论 -
▩Dart-空安全(Null Safety)
目录一、可空和不可空类型(Nullable and non-nullable types)二、空断言运算符“!”(The null assertion operator(!))三、类型提升四、`late`关键字当你选择使用空安全时,代码中的类型在默认情况下是不可空的,这意味着值不能为空,除非你说它们可以为空。When you opt into null safety, types in your code are non-nullable by default, meaning that values原创 2022-01-22 14:56:57 · 1469 阅读 · 0 评论 -
▩Dart-理解final与const
final表示单一赋值:final变量或字段必须初始化。 一旦赋值,就不能改变final变量的值。一个 final 变量只能被设置一次,两者区别在于:const 变量是一个编译时常量;final变量在第一次使用时被初始化。(被final或者const修饰的变量,变量类型可以省略。)通俗的说就是:final在被使用到的时候才会进行初始化, 如果只是被定义, 而没有被使用到, 那么这个变量一直没有被初始化 (可以理解为’懒加载’)。const修饰的变量, 一经定义就会在编译期间对其进行初始化。c原创 2022-01-21 05:14:57 · 647 阅读 · 0 评论 -
▩Dart-五例知识点
例子一:class Bicycle { int cadence; int speed; int gear;}main() {}有什么问题吗?提示:非空实例字段‘cadence’必须初始化。➀尝试添加一个初始值,或➁创建一个构造函数去初始化它,或➂标记它为late。现添加一个构造函数,来完成Bicycle类字段的初始化:Bicycle(this.cadence, this.speed, this.gear);// 这个构造函数没有函数体,这在Dart中是有效的。这样就不再原创 2022-01-21 04:18:23 · 579 阅读 · 0 评论 -
▩Dart-库概述‘dart:io’
目录1. 文件和目录2. HTTP客户端和服务器3. 更多dart:io - 服务器和命令应用程序的I/O。dart:io库提供APIs处理文件(files)、目录(directories)、进程(processes)、套接字(sockets)、WebSocket以及HTTP客户端和服务器的API。重要说明:只有非web Flutter应用程序、命令行脚本和服务器才能导入和使用dart:io,而不是web应用程序。通常,dart:io库实现并提升异步API。同步方法很容易阻塞应用程序,使其难以原创 2022-01-14 05:22:30 · 1120 阅读 · 0 评论 -
▩Dart-库概述‘dart:html’
目录1. 操作DOM2. 用HttpRequest使用HTTP资源3. 用WebSockets发送和接收实时数据4. 更多dart:html - 基于浏览器应用使用dart:html库编程浏览器,操作DOM中的对象和元素,并访问HTML5 APIs。DOM代表文档对象模型(Document Object Model),它描述HTML页面的层次结构。dart:html的其他常见用途包括操纵样式(CSS)、使用HTTP请求获取数据以及使用WebSocket交换数据。HTML5(和dart:html)有许多原创 2022-01-14 04:47:42 · 1481 阅读 · 0 评论 -
▩Dart-库概述‘dart:convert’
目录1. 编解码JSON2. 编解码UTF-8字符3. 其他功能dart:convert - 编解码JSON,UTF-8等。dart:convert 库提供 JSON 和 UTF-8 转换器,以及创建其他转换器。 JSON 是一种用于表示结构化对象和集合的简单文本格式。 UTF-8 是一种常见的可变宽度编码,可以表示Unicode字符集中的每个字符。1. 编解码JSON使用 jsonDecode() 解码 JSON 编码的字符串为 Dart 对象:// NOTE: Be sure to use d原创 2022-01-14 02:42:57 · 1181 阅读 · 0 评论 -
▩Dart-库概述‘dart:math’
目录1. 三角函数2. 最大值和最小值3. 数学常数4. 随机数更多内容dart:math - 数学和随机数dart:math 库提供通用的功能,例如,正弦和余弦,最大值和最小值,以及数学常数,例如 pi 和 e。大多数在 Math 库中的功能是作为顶级函数实现的。1. 三角函数// Cosineassert(cos(pi) == -1.0);// Sinevar degrees = 30;var radians = degrees * (pi / 180);// radians is n原创 2022-01-14 02:26:16 · 992 阅读 · 0 评论 -
▩Dart-库概述‘dart:async’
dart:async - 异步编程异步编程通常使用回调方法来实现,但是 Dart 提供了其他方案:Future 和 Stream 对象。 Future 类似与 JavaScript 中的 Promise,代表在将来某个时刻会返回一个结果。 Stream 类可以用来获取一系列的值,比如,一系列事件。备忘:你并不总是需要直接使用 Future 或 Stream 的 API。 Dart 语言支持使用关键字(例如,async 和 await )来实现异步编程。dart:async 库可以工作在 web原创 2022-01-14 02:05:27 · 845 阅读 · 0 评论 -
▩Dart-库概述‘dart:core’
dart:core库提供了一个少量但是重要的内置功能集合。1.控制台打印顶级 print() 方法接受一个参数任意对象,并输出显示这个对象的字符串值(由 toString() 返回) 到控制台。print(anObject);print('I drink $tea.');2.数字dart:core 库定义了 num ,int 以及 double 类,这些类拥有一定的工具方法来处理数字。使用 int 和 double 的 parse() 方法将字符串转换为整型或双浮点型对象:assert(i原创 2022-01-14 00:47:52 · 657 阅读 · 0 评论 -
▩Dart-杂谈函数及类
Dart,一切都是一个对象,包括函数,这意味着您可以将函数存储在变量中,并以与传递String、int或任何其他对象相同的方式在应用程序中传递函数。这被称为具有一级函数(first-class functions),因为它们被视为等同于其他类型,而不是语言中的二级公民(second-class citizens)。1. void go(...){...snip...;}2. go(...){...snip...;}第1行代码,明确表示没有返回值。第2行代码,没有return语句,它等效于retur原创 2022-01-09 04:02:29 · 630 阅读 · 0 评论 -
▩Dart-初识‘dart:html’库-实例解析
dart:html: DOM manipulation for web apps (available only to web apps).HTML elements and other resources for web-based applications that need to interact with the browser and the DOM (Document Object Model)即:dart:html库是操纵DOM的,仅用于Web。直接上完整示例:main.html&l原创 2022-01-09 02:05:31 · 2439 阅读 · 1 评论