Flutter学习笔记(二):Dart语言开发环境安装和配置
📅 2019-07-05 | 🖱️
🔖 flutter
前面我们已经安装了Flutter的开发环境,并运行了Flutter的hello_world
的样例。本篇介绍一下Dart语言开发环境的安装和配置。
Dart也是谷歌开发的一门用于前端开发的语言(当然也支持服务器端),据说最初的目的是想取代JavaScript,后来Flutter的开发语言成了Dart。
因此,学习Flutter的第一步是先学一下Dart语言开发。(ps: 前端开发的Dart + 后端开发的Go,不难看出Google的布局)。
如果在学习Dart之前如果已经熟悉Java、Go、Groovy等编程语言的话,对于快速学习Dart的语法和一些基本特性,只需要花一个小时的时间阅读以下Dart官方的 Dart语法预览文档即可,感觉Dart在语法上融合了众语言的特性,提供了很多语法糖,因此可能会觉得有点’杂’。
1.Dart SDK安装 #
1brew tap dart-lang/dart
2brew install dart
3
4dart --version
5Dart VM version: 2.4.0 (Wed Jun 19 11:53:45 2019 +0200) on "macos_x64"
2.VS Code安装Dart Code插件 #
在VS Code中安装Dart Code插件
3.Dart语言快速浏览 #
3.1 Hello Dart #
hello.dart:
1void main() {
2 sayHello("Dart");
3}
4
5void sayHello(lang) => print('hello $lang');
运行:
1dart hello.dart
3.2 内置类型 #
Dart内置了几种常用类型,分别是String
, int
, double
, bool
, List
, Map
,看下面的代码例子:
1
2void main() {
3 var name = 'Voyager I';
4 var year = 1977;
5 var antennaDiameter = 3.7;
6 var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
7 var image = {
8 'tags': ['saturn'],
9 'url': '//path/to/saturn.jpg'
10 };
11
12 if (year >= 2001) {
13 print('21st century');
14 } else if (year >= 1901) {
15 print('20th century');
16 }
17
18 for (var object in flybyObjects) {
19 print(object);
20 }
21
22 for (int month = 1; month <= 12; month++) {
23 print(month);
24 }
25
26 while (year < 2016) {
27 year += 1;
28 }
29 print(antennaDiameter.round());
30 print(name);
31 print(image);
32}
3.3 函数 #
1int fibonacci(int n) {
2 if (n == 0 || n == 1) {
3 return n;
4 }
5 return fibonacci(n - 1) + fibonacci(n - 2);
6}
7
8void main() {
9 var result = fibonacci(20);
10 print(result);
11}
只有一个语句的方法可以写成类似箭头函数风格:
1var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
2flybyObjects.where((name) => name.contains("anus")).forEach(print);
3
4void sayHello(String lang) => print('hello ' + lang);
5sayHello("Dart");
3.4 类 #
1
2class Spacecraft {
3 String name;
4 DateTime launchDate;
5 int lautchYear;
6
7 // Constructor, including syntactic sugar for assignment to members.
8 Spacecraft(this.name, this.launchDate) {
9 lautchYear = launchDate?.year;
10 }
11
12 // Named constructor that forwards to the default one.
13 Spacecraft.unlaunched(String name) : this(name, null);
14
15 // Method
16 void describe() => print('Spacecraft: $name, $lautchYear');
17
18}
19
20void main() {
21 var voyager = new Spacecraft('Voyager I', new DateTime(1977, 9, 5));
22 voyager.describe();
23}
3.5 Inheritance 和 Mixins #
1class Orbiter extends Spacecraft {
2 num altitude;
3 Orbiter(String name, DateTime launchDate, this.altitude)
4 : super(name, launchDate);
5}
6
7class Manned {
8 int astronauts;
9 void describeCrew() {
10 print('Number of astronauts: $astronauts');
11 }
12}
13
14class Orbiter extends Spacecraft with Manned {
15 // ...
16}
3.6 Interface #
Dart 没有 interface 关键字。在 Dart 中所有的类都隐含的定义了一个接口。因此你可以使用 implement 来实现任意的类隐含定义的接口。
1class MockSpaceship implements Spacecraft {
2 // ...
3}
更多可查看Dart文档中的示例代码