在学习Dart语言之前,我们需要先熟悉一些基础的语法,包括变量的声明和使用,以及对Dart中基础数据类型的了解。
如果你有了解typescript,那么对于本文你将能很快理解
运行环境插件的安装
-
学习变量和数据类型之前,我们需要一个运行环境,上一篇文章教大家安装了Dart SDK,相信各位都已经安装成功了,但是想要编译运行实时预览我们的Dart代码,还需要一个代码编辑器和Dart插件,和一个代码运行器。
-
可以使用VsCode,WebStorm,IntelliJ IDEA,Atom,等,笔者使用的事VsCode,下面就介绍下VsCode的运行环境配置。
-
vscode下载地址:code.visualstudio.com/
-
首先,打开vscode插件安装模块,搜索Dart 正常第一个就是,点击安装
-
在安装一个代码运行器 搜索 code Runner ,同样点击安装
-
现在运行环境就全部搭建完成了,接下来我们创建一个文件运行试试,
-
dart 文件后缀名是
.dart,创建一个test.dart文件,然后使用vscode打开,复制如下代码到文件内并保存 -
需要说明的是,在Dart中,每个应用都有一个顶层的
main()函数来作为运行入口。没有指定返回类型的方法的返回类型会推导为void。你可以使用顶层函数print()来将一段文本输出显示到控制台。void main() { print('Hello, World!'); } -
然后鼠标右键单击找到 Run Code ,点击运行,即可在控制台查看到打印结果
-
至此,运行环境就已经全部搭建完成了,可以开始进入我们今天的主题啦。
变量和声明方式
-
变量,是我们在编程中操控数据的基本单位。在Dart中,有多种方式来声明和使用变量。
- 使用
var来声明变量
var name = 'uli' ; //Dart 会自动推断出变量的数据类型,在本例中,会自动推断出 `name`是`string`类型- 也可以在声明变量的时候明确指定变量的类型,这样可以使得代码更容易理解,并且能够让Dart在编译时检查到类型错误
String name = 'hi-uli' ; - 使用
-
Dart 2.12版本引入了空安全特性,空安全可防止因无意访问设置为 的变量而导致的错误
null。该错误称为空解除引用错误。当您访问属性或对计算结果为 的表达式调用方法时,会发生空取消引用错误null。此规则的一个例外是当null支持属性或方法时,例如toString()或hashCode。通过 null 安全性,Dart 编译器可以在编译时检测到这些潜在错误。- 如果变量可能会是空值,需要类型声明后面添加一个问号
?来开启变量可为空值
String? nullFirstName = null ; - 如果变量可能会是空值,需要类型声明后面添加一个问号
-
默认值
- 具有可为 null 类型的未初始化变量的初始值为
null。即使是数字类型的变量最初也是 null,因为数字(与 Dart 中的其他所有内容一样)都是对象。 - 所以基于null安全性,必须在使用不可为 null 的变量之前初始化它们的值:
int LineCount = 0; //int 会在后面数据类型解释 - 具有可为 null 类型的未初始化变量的初始值为
-
如果一个变量在初始化后值不在改变,推荐使用
final和const来代替var声明变量。final Name = 'uli'; //or final String Wechat = 'hai-uli'; const pi = 3.1415926;//or const Number Angle = 90;- 重要:
final和const的是有区别的,final声明的变量只能被设置一次,而cosnt声明的变量是编译时常量。 (常量变量是隐式最终变量)
- 重要:
基础数据类型
Dart 是一个强类型语言,包含了许多常见的数据类型,见下文:
Numbers(int,double)
-
int
- 整数值不大于 64 位, 具体取决于语言环境。在Dart上,值的范围可以是 -2 63到 2 63 - 1。在 Web 上,整数值表示为 JavaScript 数字(没有小数部分的 64 位浮点值),并且可以是从 -2 53到 2 53 - 1.
int age = 18; -
double
- 64 位(双精度)浮点数,由 IEEE 754 标准指定。
double score = 98.5;
Strings
-
表示文本的数据类型,保存一系列 UTF-16 代码单元,可以使用单引号或双引号来创建字符串
String Hello = 'Hello';//or String Name = "uli";
Booleans
-
包含
true和false两种布尔值.bool IsFalse = false; bool IsTrue = true;
Lists
-
一个有序的列表集合,在大多数语言中都被成为数组。
List<int> list = [1, 2, 3];
maps
-
无序的键值对组合,在
js中这种被称为对象。Map<String, String> countries = { 'CN': 'China', 'US': 'United States', 'JP': 'Japan' };
sets
-
集合,无序,不可重复。常用于过滤重复数据.
void main() { Set<String> mySet = {'apple', 'banana', 'orange', 'apple', 'banana'}; print(mySet); } //>>>输出 // {apple, banana, orange}
Runes
-
Runes 是用于表示Unicode代码点的一种数据类型。Unicode代码点是指给定字符在Unicode字符集中的唯一整数值。Dart使用Runes来处理字符串中的Unicode字符,尤其是那些无法用单个UTF-16代码单元表示的字符(比如一些辅助平面字符).
void main() { // 使用Runes创建包含特殊Unicode字符的字符串 Runes specialString = Runes('\u2665 Hello \u{1F60D} World \u{1F984}'); // 将Runes转换为字符串 String convertedString = String.fromCharCodes(specialString); print('Converted String: $convertedString'); } //打印结果 //Converted String: ♥ Hello 😍 World 🦄
Records(支持的最低版本>3.0)
-
是一种匿名的、不可变的聚合类型。
var record = (1, a: 2, 3, b: 4); //已经声明好的值是不允许被改变的,否则会报错推荐几篇文章详细介绍
Records:Dart 3.0 语法新特性 | Records 记录类型 (元组)
最后
学习Dart语言的最重要基础就是理解变量的声明和数据类型,掌握这些基础知识后,后面就可以开始尝试编写稍微复杂一点的Dart程序了
其实,不单单是学习Dart语言的最重要基础是理解变量声明和数据类型,学习其他编程语言也是如此