美文网首页
第二章 Flutter开发 - Dart语言

第二章 Flutter开发 - Dart语言

作者: 歐陽公子 | 来源:发表于2021-08-24 20:40 被阅读0次

    前言

    Flutter应用程序使用Dart语言开发,Dart是面向对象编程语言,由Google于2011年推出,为了更好的使用Flutter进行应用开发,本文将详细介绍Dart语言的语法和特性。


    优势

    1、高效 Dart 语法清晰简洁,工具简单而强大。 输入检测可帮助您尽早识别细微错误。 

    2、Dart 拥有久经考验的 核心库(core libraries) 和一个已经拥有数以千计的 packages 生态系统 快速 Dart 提供提前编译优化,以在移动设备和 web 上实现可预测的高性能和快速启动。 

    3、可移植 Dart 可以编译成 ARM 和 x86 代码,因此 Dart 移动应用程序可以在 iOS,Android 及 更高版本上实现本地运行。 对于 web 应用程序,Dart 可以转换为 JavaScript。

    4、易学 Dart 是面向对象的编程语言,语法风格对于许多现有的开发人员来说都很熟悉。 如果您已经了解 C++,C# 或 Java ,那么使用 Dart 也就是分分钟的事情。 

    5、响应式 Dart 可以便捷的进行响应式编程。由于快速对象分配和垃圾收集器的实现, 对于管理短期对象(比如 UI 小部件), Dart 更加高效。 Dart 可以通过 Future 和 Stream 的特性和API实现异步编程。

    重要概念

    在学习Dart之前,先要了解以下Dart相关概念:

    能够放在变量中的所有内容都是对象,每个对象都是一个类的实例。甚至于数字、函数和null值都是对象,并且所有对象都继承自Object类。

    Dart是强类型语言,但类型标识是可选的,因为Dart可以推断类型。如果要明确说明不需要任何类型,可以使用特殊类型dynamic标识。

    Dart支持泛型,如List或List(任何类型的对象列表)。

    Dart支持顶级函数(例如main函数),以及绑定到类或对象的函数(分别是静态方法和实例方法)。函数内部也可以创建函数(嵌套函数或本地函数)。

    Dart支持顶级变量,以及绑定到类或对象的变量(分别是静态变量和实例变量)。

    与Java不同,Dart没有关键字public、protected和private。如想设置私有变量或函数,则变量和函数名以下划线(_)开头。

    标识符可以以字母或下划线(_)开头,后跟这些字符加数字的任意组合。

    Dart有两个表达式(具有运行时值)和语句(不具有)。 例如,条件表达式条件? expr1:expr2的值为expr1或expr2。 将其与if-else语句进行比较,该语句没有任何值。 语句通常包含一个或多个表达式,但表达式不能直接包含语句。

    Dart工具可以报告两种问题:警告和错误。警告只是表明您的代码可能无法正常工作,但它们不会阻止您的程序执行。 错误可以是编译时或运行时。 编译时错误会阻止代码执行; 运行时错误导致代码执行时引发异常。

    main() 函数

    任何应用都必须有一个顶级 main() 函数,作为应用服务的入口。 main() 函数返回值为空,参数为一个可选的 List<String> 。

    词法作用域

    Dart 是一门词法作用域的编程语言,就意味着变量的作用域是固定的, 简单说变量的作用域在编写代码的时候就已经确定了。 花括号内的是变量可见的作用域。

    返回值

    所有函数都会返回一个值。 如果没有明确指定返回值, 函数体会被隐式的添加 return null; 语句。

    运算

    在运算符表中, 每一行的运算符优先级,由上到下依次排列,第一行优先级最高,最后一行优先级最低。 例如 % 运算符优先级高于 == , 而 == 高于 &&。 根据优先级规则,那么意味着以下两行代码执行的方式相同:

    // 括号可以提高可读性。

    if ((a % b == 0) && (c % d == 0)) ...// 可读性差,但是是等效的。

    if (a % b == 0 && c % d == 0) ...

    赋值运算符

    使用 = 为变量赋值。 使用 ??= 运算符时,只有当被赋值的变量为 null 时才会赋值给它。

    // 将值赋值给变量aa = value;

    // 如果b为空时,将变量赋值给b,否则,b的值保持不变。

    b ??= value;

    复合赋值运算符(如 += )将算术运算符和赋值运算符组合在了一起。

    级联运算符 (..)

    级联运算符 (..) 可以实现对同一个对像进行一系列的操作。 除了调用函数, 还可以访问同一对象上的字段属性。 这通常可以节省创建临时变量的步骤, 同时编写出更流畅的代码。


    Dart 是一种基于类和 mixin 继承机制的面向对象的语言。 每个对象都是一个类的实例,所有的类都继承于 Object. 。 基于 * Mixin 继承* 意味着每个类(除 Object 外) 都只有一个超类, 一个类中的代码可以在其他多个继承类中重复使用。

    异步支持

    Dart 库中包含许多返回 Future 或 Stream 对象的函数. 这些函数在设置完耗时任务(例如 I/O 曹组)后, 就立即返回了,不会等待耗任务完成。 使用 async 和 await 关键字实现异步编程。 可以让你像编写同步代码一样实现异步操作。

    Isolates

    大多数计算机中,甚至在移动平台上,都在使用多核CPU。 为了有效利用多核性能,开发者一般使用共享内存数据来保证多线程的正确执行。 然而, 多线程共享数据通常会导致很多潜在的问题,并导致代码运行出错。

    所有 Dart 代码都在隔离区( isolates )内运行,而不是线程。 每个隔离区都有自己的内存堆,确保每个隔离区的状态都不会被其他隔离区访问。

    相关文章

      网友评论

          本文标题:第二章 Flutter开发 - Dart语言

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