Number 数字类型
-
Number 数字类型,包含
- int 整型
- double 浮点型
int 和 double 都是 num 的子类。
int a = 1;
print(a); // 1
double b = 2.0;
print(b); // 2.0
num c = -3;
print(c); // -3
复制代码
String 字符串类型
Dart 支持使用双引号和单引号来创建字符串。使用 String 来定义变量,表明该变量是字符串类型。Dart 中字符串类型的使用跟 JavaScript 中字符串的使用相似:
字符串拼接
使用 + 符号进行拼接
String s1 = 'Hello ';
String s2 = 'World!';
String s3 = s1 + s2;
print(s3); // Hello World!
复制代码
转义字符处理
使用 `` 来表示
String s1 = 'I'm Jimmy.'
print(s1); // I'm Jimmy.
String s2 = "第一行文本\n第二行文本";
print(s2);
// 第一行文本
// 第二行文本
复制代码
多行文本
我们可以使用 ''' 或者 """ 来表示,比如上面的 "第一行文本\n第二行文本" 我们可以这样写:
'''
第一行文本
第二行文本
'''
// 或者
"""
第一行文本
第二行文本
"""
复制代码
字符串插值
在字符串中,我们使用 S{表达式} 的形式使用表达式
String s1 = 'my name is Jimmy.';
print('Hello, ' + s1); // Hello, my name is Jimmy.
print('Hello, ${ s1 }'); // Hello, my name is Jimmy.
print('Hello, ${ s1.substring(10, 1) }!'); // Hello, Jimmy.
复制代码
Boolean 布尔类型
我们先来看下下面的代码:
String str = '';
if(str) {
print('true');
} else {
print('flase');
}
复制代码
那上面的代码会打印什么呢?true 或者 false 呢?
上面的代码会报错:
Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
if(str) {
^
Error: Compilation failed.
复制代码
在 if(str) 这里,编译失败,因为在 dart 语言里面,变量值必须是 true 或者 false 才行。改写下上面的代码:if(str) => if(str.isEmpty) 即可通过编译。
所以读者不要把 JavaScript 判断布尔值的方式带过来 Dart 这里编写:
| JavaScript (false) | Dart (true) | |
|---|---|---|
| var variable = 0 | variable (false) | variable <= 0 (true) |
| var variable = null | variable (false) | variable == null (true) |
| var variable = '' | variable (false) | variable.isEmpty (true) |
| var variable = NaN | variable (false) | variable.isNaN (true) |
| var variable = true | variable (true) | variable (true) |
所以,你直接定义布尔类型变量的时候,正确的姿势应该是这样:
bool flag = true
// 或者
bool flag = false
复制代码
list 数组类型
这里的 list 我理解成数组,因为这跟 JavaScript 里面的 array 很类似~
List arr = ['Hello ', 'World!'];
// 数组的长度
print(arr.length); // 2
// 数组的取值
print(arr[0]); // Hello
// 数组的赋值
arr[1] = 'Jimmy. ';
print(arr.join('')); // Hello Jimmy.
// 扩展运算符
var list = ["I'm ", 'come ', 'from ', 'China.'];
print([...arr, ...?list].join('')); // Hello Jimmy. I'm come from China.
复制代码
...?为空感知扩展操作符,如果扩展操作符右边的变量值可能是null, 我们可以使用...?来避免产生异常
Set 集合类型
集合有三个特性;
- 无序性:每个元素的地位都是相同的,元素之间无序。
- 互异性:每个元素只能出现一次。
- 确定性:给定一个集合,任何一个元素,该元素
或者属于或者不属于该集合,二者必居其一,不允许模棱两可的情况出现。
使用如下:
// 定义集合
Set set = new Set();
// 集合的大小
print(set.length); // 0
// 添加元素
set.add('Hello ');
set.add('World!');
print(set); // {Hello , World!}
// 判断集合中是否存在指定元素
print(set.contains('Jimmy')); // false
// 一次添加多个列表元素
set.addAll(["I'm ", 'come ', 'from ', 'China.']);
print(set); // {Hello , World!, I'm , come , from , China.}
// 移除指定的元素
set.remove('World!');
print(set); // {Hello , I'm , come , from , China.}
复制代码
Map 对象类型
把 Map 理解成对象,是因为这跟 JavaScript 中的对象很类似。
// 定义对象
Map map = new Map();
// 对象的大小
print(map.length); // 0
// 添加对象属性
map['name'] = 'Jimmy';
map['country'] = 'China';
print(map); // {name: Jimmy, country: China}
// 读取属性值
print(map['name']); // Jimmy
// 读取对象的 keys 值
print(map.keys); // (name, country)
// 读取对对象的 values 值
print(map.values); // (Jimmy, China)
复制代码
Runes 和 Symbols
在 Dart 中,runes 公开了字符串的 Unicode 码位。Symbol 表示 Dart 中声明的操作符或者标识符。
因为这两个使用较少,这里就不进行介绍。后面需要使用到再补充...
补充
不知道读者有没有留意到,我定义变量的时候有时候也用到了 var,那么它究竟是什么呢?
var 是 Dart 语言使用的关键字,是 variable 的简写,表明这是一个泛型调用(generic invocations) 。
var name = 'Jimmy'; // 泛型调用,表明变量类型不知道是啥
String name = 'Jimmy'; // 类型注释,表明我一定是 String 类型
复制代码
当然,还有 const 和 final 的使用。
往期精彩推荐
如果读者觉得文章还可以,不防一键三连:关注➕点赞➕收藏
分类:
标签:
文章被收录于专栏:
flutter
Flutter 相关的文章
关注专栏
多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有!
评论
相关推荐
-
3年前
Flutter第1天--初始分析+Dart方言+Canvas简绘
- **2.1w
- **168
- **21
-
3年前
Flutter: PageView/TabBarView等控件保存状态的问题解决方案
- **1.6w
- **44
- **14
-
3年前
- **1.6w
- **73
- **16
-
9月前
Flutter PlatformView 在闲鱼直播业务中的实践
- **1.3w
- **21
- **1
-
4年前
Flutter KO React Native? 让时间去决定吧...
- **2.3w
- **67
- **27
-
3年前
- **9357
- **181
- **7
-
2月前
- **9041
- **6
- **评论
-
3年前
- **1.3w
- **56
- **7
-
3年前
- **1.7w
- **68
- **23
-
4年前
我看完掘金上的227篇文章,总结出一份 Flutter 入门教程
- **3.3w
- **1447
- **47
-
8月前
- **1871
- **27
- **评论
-
4年前
- **572
- **点赞
- **评论
-
3年前
Flutter 知识梳理 (Dart) - Dart 中 static, final, const 区别
- **1.5w
- **39
- **2
-
4年前
从0开始写一个基于Flutter的开源中国客户端(5)——App整体布局框架搭建
- **8081
- **71
- **24
-
2年前
- **1.6w
- **96
- **9
-
4年前
[译] Flutter,什么是 Widgets、RenderObjects 和 Elements?
- **4021
- **23
- **5
-
7月前
- **1.3w
- **32
- **8
-
2年前
- **1.9w
- **181
- **60
-
3年前
- **1550
- **17
- **评论
-
3年前
- **1.2w
- **18
- **7
相关文章
目录
下一篇
稀土掘金浏览器插件——你的一站式工作台
多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有。
\