Dart学习笔记-0-一切的开始

118 阅读3分钟

参考链接:中文|English

背景介绍

本笔记默认已经搭建好对应的开发环境。当前IDEvscode, 当前dart版本:Dart SDK version: 3.2.3 (stable) (Tue Dec 5 17:58:33 2023 +0000) on "windows_x64"

查看版本命令:dart --version

起步

  1. 命令行创建应用:dart create -t console cli,create 命令会自动下载 pubspec.yaml 文件中所需要的依赖。
  2. 进入 dart-1 目录中,执行: dart run, 运行应用。
  3. 使用dart compile工具将程序AOT编译成机器代码:dart compile exe bin/cli.dart;经过这步后,bin目录下会有一个cli.exe文件。
  4. 执行Measure-Command {start-process .\bin\cli.exe -Wait}命令,来获取exe应用的运行时间。(该命令为powerShell自带的方法,只能在powerShell中使用)

执行完以上步骤,你将会得到一个基础的dart应用,并且已经将其构建完毕,可以在你的机器上运行。

dart基础概览

重要概念

以下文档中的概念是我自己翻译的,可能会有些不对。

  1. 可以赋值给变量的一切都是一个对象,每一个对象都是类的实例。所有的数值、函数和 null 都是对象。除了null,所有的对象都继承自Object类。 (这个概念和js的原型链很相似)。
  2. 虽然dart是强类型语言,但是类型定义可以省略,因为dart可以推断你的类型。比如var num = 30 就会推断 num是 int类型
  3. 如果启用null safety,变量不能包含null,除非你说可以。可以通过在变量类型的末尾加一个问号(?)来使其可以为null。例如,int?a, 其中a可能是一个整数,也可能是null。如果你知道一个表达式的计算结果永远不会为null,但Dart不同意,你可以添加!断言它不是null(如果是null则抛出异常)。例如:int x=nullableButNotNullInt!(这表达式有点没明白,我理解是在表达式后面加!,是强制其不为null的意思)。
  4. 当您想明确表示允许任何类型时,请使用类型Object?(如果您启用了null安全性)、Object,或者——如果您必须将类型检查推迟到运行时——特殊类型dynamic。
  5. Dart支持泛型类型,如List<int>(整数列表)或List<Object>(任何类型的对象列表)。
  6. Dart支持顶级函数(如main()),以及绑定到类或对象的函数(分别是静态方法和实例方法)。也可以在函数(嵌套函数或本地函数)中创建函数。
  7. 类似地,Dart支持顶级变量,以及绑定到类或对象的变量(静态变量和实例变量)。实例变量有时被称为字段或属性。
  8. 与Java不同,Dart没有关键字public、protected和private。如果标识符以下划线(_)开头,则它是其库的私有标识符。(这个和js的一些思想也有些类似,但是后来es6中的class语法糖加入了public 关键字)
  9. 标识符可以以字母或下划线(_)开头,后跟这些字符和数字的任意组合。
  10. Dart既有表达式(有运行时值),也有语句(没有)。例如,条件表达式条件?expr1:expr2的值为expr1或expr2。将其与没有值的if-else语句进行比较。一个语句通常包含一个或多个表达式,但表达式不能直接包含一个语句。(很绕 没懂)
  11. Dart工具可以报告两种问题:警告和错误。警告只是表示您的代码可能无法工作,但它们不会阻止您的程序执行。错误可以是编译时错误,也可以是运行时错误。编译时错误会阻止代码执行;运行时错误导致在代码执行时引发异常 (这个和js 其实就很像)

详细学习

  1. 变量