Flutter系列之Dart语法基础

释放双眼,带上耳机,听听看~!

今天开始分享下Flutter移动开发的相关知识,下面是部分的Dart基础语法知识。

Dart中所有东西都是对象,包括数字、函数等,
它们都继承自Object,并且默认值都是null(包括数字)因此数字、字符串都可以调用各种方法。

Dart中支持以下数据类型:

  • Numbers

  • Strings

  • Booleans

  • List(也就是数组)

  • Maps


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1void main()
2{
3  //Dart 语言本质上是动态类型语言,类型是可选的
4  //可以使用 var 声明变量,也可以使用类型来声明变量
5  //一个变量也可以被赋予不同类型的对象
6  //但大多数情况,我们不会去改变一个变量的类型
7  
8  //字符串赋值的时候,可以使用单引号,也可以使用双引号
9  var str1 = "Ok?";
10  
11  //如果使用的是双引号,可以内嵌单引号
12  //当然,如果使用的是单引号,可以内嵌双引号,否则需要“\”转义
13  //String str2 = ‘It\’s ok!’;
14  String str2 = "It's ok!";
15  
16  //使用三个单引号或者双引号可以多行字符串赋值
17  var str3 = """Dart Lang
18  Hello,World!""";
19  
20  //在Dart中,相邻的字符串在编译的时候会自动连接
21  //这里发现一个问题,如果多个字符串相邻,中间的字符串不能为空,否则报错
22  //但是如果单引号和双引号相邻,即使是空值也不会报错,但相信没有人这么做
23  //var name = 'Wang''''Jianfei'; 报错
24  var name = 'Wang'' ''Jianfei';
25  
26  //assert 是语言内置的断言函数,仅在检查模式下有效
27  //如果断言失败则程序立刻终止
28  assert(name == "Wang Jianfei");
29  
30  //Dart中字符串不支持“+”操作符,如str1 + str2
31  //如果要链接字符串,除了上面诉说,相邻字符串自动连接外
32  //还可以使用“$”插入变量的值
33  print("Name:$name");
34  
35  //声明原始字符串,直接在字符串前加字符“r”
36  //可以避免“\”的转义作用,在正则表达式里特别有用
37  print(r"换行符:\n");
38  
39  //Dart中数值是num,它有两个子类型:int 和 double
40  //int是任意长度的整数,double是双精度浮点数
41  var hex = 0xDEADBEEF;
42      
43  //翻了半天的文档,才找打一个重要的函数:转换进制,英文太不过关了
44  //上面提到的字符串插值,还可以插入表达式:${}
45  print("整型转换为16进制:$hex —> 0x${hex.toRadixString(16).toUpperCase()}");
46
47}
48

上面列举一些常见的数据对象; 

在声明变量的时候,除了var,还可以使用const和final,同时,在使用const和final的时候,可以省略var或者其他类型;

const和final定义的都是常量,值不能改变,

  • const定义的是编译时常量,只能用编译时常量来初始化

  • final定义的常量可以用变量来初始化


1
2
3
4
5
6
7
1const list = const[1,2,3];//Ok
2const list = [1,2,3];//Error
3
4final list = [1,2,3];//Ok
5final list = const[1,2,3];//Ok
6final list = const[new DateTime.now(),2,3];//Error,const右边必须是常量
7

函数定义:

如果函数只是简单的返回一个表达式的值,可以使用箭头语法 =>expr;
它等价于{return expr;}
所以上面的函数也可以这样写


1
2
1sayHello(name) => 'Hello $name!';
2

可选参数:

Dart中支持两种可选参数:命名可选参数和位置可选参数
但两种可选不能同时使用

  • 命名可选参数使用大括号{},默认值用冒号:
  • 位置可选参数使用方括号[],默认值用等号=

在命名可选参数的函数中,大括号外的a为必填参数
大括号内的参数可以指定0个或多个
并且与顺序无关,在调用函数的时候需要指明参数名
没有赋值的参数值为null


1
2
3
4
5
1FunX(a, {b, c:3, d:4, e})
2{
3  print('$a $b $c $d $e');
4}
5

在位置可选参数的函数中,大括号内的参数可以指定0个或多个
在调用的时候参数值会依次按顺序赋值


1
2
3
4
5
6
7
8
9
10
11
12
1FunY(a, [b, c=3, d=4, e])
2{
3  print('$a $b $c $d $e');
4}
5
6
7void main()
8{
9  FunX(1, b:3, d:5);
10  FunY(1, 3, 5);
11}
12

本文图片资料来源出自“Dart语言中文社区”,允许转载,转载时请务必以超链接形式标明文章原始出处 。

 

 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C/C++内存泄漏及检测

2022-1-11 12:36:11

安全活动

继小目标之后王健林再出金句 5个亿小投资又要火了

2016-12-18 19:16:27

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索