Dart快速入门,赶紧来get!

什么是Dart语言

Dart语言是谷歌公司在2011年推出的新的计算机语言。Dart可以应用于web、服务器、移动应用和物联网等领域的开发。Dart的终极目标是取代JavaScript。Dart设计完全脱离JavaScript,因此它没有向后兼容JavaScript。Dart语言的发展始终一直都是不温不火。

为什么要用Dart

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。Flutter选择了Dart作为开发语言,因此想学习Flutter就必须先学习好Dart。

环境搭建

下载和安装Dart

可以从官网下载到最新版本的Dart。

双击下载到的exe文件,依照向导指示完成Dart的安装。

安装验证

window键+r打开运行窗口

在运行窗口的打开输入框输入cmd,然后点击确定

在命令行界面输入命令并按回车

dart--version

安装Visual Studio Code

很多常见的IDE都有Dart的插件可以使用,这里推荐使用Visual Studio Code加插件进行Dart开发。可以在官网下载到Visual Studio Code,安装完成后可以开始添加插件。

安装Dart插件

安装Code Runner插件

helloworld

在VSC新建文件

输入以下代码

voidmain(){

print('hello world');

}

在文件上按鼠标右键,选择点击Run Code运行

运行结果

变量声明

var

使用方式与JavaScript的var一致,可以接收任意类型的值。不同的地方是,Dart是强类型语言,赋值以后类型就确定下来,不能再更改为其它类型。

varname;

name='zhangsan';

// 下面的代码在dart中会报错,原因是变量name类型已经确定为String

// 类型一旦确定就不能再更改.

name=100;

final和const

final和const类似都可以定义一个常量。它们的区别是const在声明必须赋值,而final可以先预声明需要使用时再赋值。

// const和final在声明字面量时作用是一致的

constPI=3.14159;

finalPI2=3.14159;

// 以下代码会报错,原因是常量赋值后就不能再做修改

// PI = 3.1415926535;

finalnow=newDateTime().now();

// 以下代码在dart中会报错,const在编译时就必要赋值,而new DateTime().now()

// 在运行才能产生具体的

// const now2 = new DateTime().now();

数据类型

Dart内置节以下几种数据类型

String

Number

Boolean

List(Dart没有数组,类似于数组的作用)

Map

Runes(UTF-32字符集的字符)

Symbols

通过一段代码来演示以上的数据类型

voidmain(){

// Number

inta=1;

doubleb=0.1;

// String

vars1='this is a string';

Strings2="this is another string";

// boolean

varflag=true;

boolflag2=false;

// List

Listlist=[1,2,3,4,5];

Listlist2=['zhang','san',"123","456"];

Listlist3=[1,true,'haha',1.0];

// Map

Mapperson=newMap();

map['name']='zhangsan';

map['age']=22;

// Dart使用runes来获取UTF-32字符集的字符。String的codeUnitAt and codeUnit属性可以获取UTF-16字符集的字符

varclapping='\u';

print(clapping);// 打印的是拍手emoji的表情

// symbols

print(#s==newSymbol("s"));// true

}

函数

函数的返回值

Dart是面向对象的编程语言,所以函数也是一个对象,还有一种类型Function,也就是说函数可以赋值给某个变量或者作为参数传给另外的函数。Dart建议给函数添加上返回类型,但是不加返回类型的函数同样可以正常工作,另外还可以用lamda表达式,比如下面的代码:

// 声明返回类型

intadd(inta,intb) {

returna+b;

}

// 不声明返回类型

add2(inta,intb) {

returna+b;

}

// =>是return语句的简写

add3(a,b)=>a+b;

main() {

print(add(1,2));// 3

print(add2(2,3));// 5

print(add3(1,2));// 3

}

命名参数、位置参数、参数默认值

命名参数

使用花括号将函数的参数括起来就是定义了命名参数,如下面的代码所示:

sayHi({Stringname}) {

print("hello, my name is$name");

}

sayHi2({name:String}) {

print("hello, my name is$name");

}

main() {

// 打印 hello, my name is zhangsan

sayHi(name:'zhangsan');

// 打印 hello, my name is wangwu

sayHi2(name:'wangwu');

}

从上面代码可以看到,命名参数时可以使用或者两种方式声明参数,而调用命名参数时,需要以funcName(paramName: paramValue)的形式调用。

命名参数的参数并不是必须的,所以上面的代码中,如果调用sayHi()不带任何参数,也是可以的,只不过最后打印出来的结果是:hello, my name is null。

位置参数

使用中括号[]括起来的参数是函数的位置参数,代表该参数可传可不传,位置参数只能放在函数的参数列表的最后面,如下代码所示:

sayHello(Stringname,intage, [Stringhobby]) {// 位置参数可以有多个,比如[String a, int b]

varmsg="hello, this is$nameand I am$ageyears old";

if(hobby!=null) {

msg="$msg, my hobby is$hobby");

}

print(msg);

}

main() {

// hello, this is zhangsan and I am 20 years old

sayHello("zhangsan",20);

// hello, this is zhangsan and I am 20 years old, my hobby is play tv game

sayHello("zhangsan",20,"play tv game");

}

参数默认值

可以为命名参数或者位置参数设置默认值,如下代码所示:

// 命名参数的默认值 int add() { return a + b; } // 位置参数的默认值 int sum(int a, int b, [int c = 3]) { return a + b + c; }

main()函数

不论在Dart还是Flutter中,必须都需要一个顶层的main()函数,它是整个应用的入口函数,main()函数的返回值是void,还有一个可选的参数,参数类型是List。

匿名函数

大多数函数都是有名称的,比如main() hello()等,但是也可以写匿名函数,如果对JavaScript比较熟悉,看到下面的肯定也不会陌生:

test(Function callback) { callback("hello"); } main() { test((param) { // 打印hello print(param); }); }

匿名函数类似于Java中的接口,往往在某个函数的参数为函数时使用到。

函数返回值

所有的函数都有返回值,如果没有指定return语句,那么该函数的返回值为null。

运算符

Dart中的运算符与JavaScript中的类似,比如++a、a == b、b ? a : b,但是也有一些与JavaScript不太一样的运算符,下面用代码说明:

main() { // 与JavaScript相同的运算符操作 int a = 1; ++a; a++; var b = 1; print(a == b); // false print(a * b); // 3 bool real = false; real ? print('real') : print('not real'); // not real print(real && a == b); // false print(real || a == 3); // true print(a != 2); // true print(a

控制流程

if...else, switch, for, while, try...catch语句跟JavaScript中都类似,try...catch语句可能稍有不同,下面用一段代码说明:

main() { // if...else语句 int score = 80; if (score = 60 && score = 80) { print("well done!"); } // switch语句 String a = "hello"; // case语句中的数据类型必须是跟switch中的类型一致 switch (a) { case "hello": print("good weather"); break; case "world": print("good morning"); break; default: print("good bye"); } // for语句 List list = ["a", "b", "c"]; for (int i = 0; i print(item)); // while语句 int start = 1; int sum = 0; while (start

总结

在这里我们学习了怎样配置Dart的开发环境,对变量声明、数据类型、函数、运算符、控制流程语法进行说明,为更深入学习Dart或者Flutter打下基础。

你点的每个在看,我都认真当成了喜欢

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191104A0M7L000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券