Dart 介绍

官网
Dart 是由谷歌开发的计算机编程语言。被用于 Web、服务器、移动应用和物联网等领域的开发。它使用宽松开源许可证(BSD 证书)。Dart 被设计为面向对象的、类定义的、单继承的语言。它的语法有点类似 C 语言,并且可以转译为 JavaScript,支持混入(mixins)、接口(interfaces)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)与 sound type system。

Dart数据类型

  • 数值 Number int double
  • 字符串 String
  • 布尔值 bool
  • 数组 List
  • 字典 Map
  • Set Set 是一个元素唯一且无序的集合
  • Runes
  • Symbol
  • Null

Dart 支持类型推断,所以大多数情况下,并不需要显式的指定类型。

1
2
3
4
5
6
7
main() {
var name = "this is a name"; // 字符串
var year = 2020; // 整型
var money = 15.32; // 浮点型
var fruits = ['apple', 'banana', 'lemon', 'grape', 'orange']; // 数组
var student = {'name': "Jim", 'age': 12}; // 对象
}

Object 是所有 Dart 对象的基类型,所以任何值都可以赋值给 Object。

1
2
3
4
5
6
7
8
9
10
11
main() {
var name = "this is a name"; // 字符串
var year = 2020; // 整型
Object obj;
// 以下代码都可以正常运行
obj = name;
print(obj);

obj = year;
print(obj);
}

数值

1
2
3
// 1.数值
int intvalue = 0;
double num = 1.2222; // 浮点数

字符串

1
2
3
4
5
6
7
8
9
10
11
12
// 2.字符串
String str1 = 'hello';
String str2 = 'dart!';
print("$str1 $str2"); // hello dart! 字符串拼接
// ''' 3个引号(单引号、多引号)可以用来写多行字符串
String str3 = '''
第一行
第二行
第三行
''';
print(str3);

布尔值

1
2
3
bool booll = true;
bool bool2 = false;
print(booll); // true

数组

声明

1
2
3
List list1 = [];
var list2 = [];
List<String> list3 = ['test', 'str', 'arr']; // 指定类型list

取值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
List<String> list = ['test', 'str', 'arr']; // 指定类型list
print(list[0]); // test

var listTake = [1, 2, 3, 4, 5];

// take
print(listTake.take(2)); // (1,2) 从0开始取count个元素,并返回结果
// takeWhile
print(listTake.takeWhile((value) => value < 5)); // (1, 2, 3, 4) 返回listTake

// retainWhere
listTake.retainWhere((element) => element>2); // 改变原数组
print(listTake); // [3, 4, 5]

长度

1
2
List<String> list = ['test', 'str', 'arr']; // 指定类型list
print(list.length); // 3

添加

1
2
3
4
5
List list = [];
// add
list.add(1); // 添加单个
// addAll
list.addAll([2, 3]); // 可以做数组合并

插值

1
2
3
4
5
6
7
8
List list = [];
// insert
list.insert(0, 12); // 入参 index,value
print(list); // [12]

// insertAll
list.insertAll(0, [10, 11]);
print(list); // [10, 11, 12]

替换

1
2
3
4
5
6
7
8
9
10
// setAll
List list = [0, 1, 2];
list.setAll(1, ['set','set1']); // 从index开始逐个替换
print(list); // [0, set, set1]

// fillRange
List listFill = [1, 2, 3, 4, 5];
listFill.fillRange(1, 3, 66); // fillRange(start,end,value) 从start-end每个元素⽤value替换
print(listFill); // [1, 66, 66, 4, 5]

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
List listRemove = <int>[0, 1, 2, 3, 4, 5, 6, 7, 8, 0];

// remove
listRemove.remove(0); // 入参值 删除第一个相同的值
print(listRemove); // [1, 2, 3, 4, 5, 6, 7, 8, 0]

// removeAt
listRemove.removeAt(0); // 入参index
print(listRemove); // [2, 3, 4, 5, 6, 7, 8, 0]

// removeLast
listRemove.removeLast(); // 删除数组最后一位
print(listRemove); // [2, 3, 4, 5, 6, 7, 8]

// removeRange
listRemove.removeRange(1, 3); // 删除指定范围的值,包含start,不包含end
print(listRemove); // [2, 5, 6, 7, 8]

// removeWhere
listRemove.removeWhere((e) => e == 8); // 删除满足条件的值 删除8
print(listRemove); // [2, 5, 6, 7]
listRemove.removeWhere((e) => e > 4); // 删除满足条件的值 删除大于4的值
print(listRemove); // [2]

索引

1
2
3
List listIndex = <int>[0, 1, 2, 0];
print(listIndex.indexOf(1)); // 1
print(listIndex.lastIndexOf(0)); // 3 从后往前找,返回第一个满足条件的额值

翻转

1
2
3
List listReversed = <String>['test', 'str', 'arr'];
print(listReversed.reversed); // (arr, str, test)
print(listReversed.reversed.toList()); // [arr, str, test] 返回新list

首尾值

1
2
3
List list = <String>['test', 'str', 'arr'];
print(list.first); // test
print(list.last); // arr

循环

1
2
3
4
5
6
7
8
9
10
11
12
13
List<String> lists = ['str', 'str1', 'str2'];
// map
print(lists.map((e) => e)); // (str, str1, str2)
print(lists.map((e) => e == 'str')); // (true, false, false)
print(lists.map((e) => e).toList()); // [str, str1, str2]

var testList = <int>[0, 1, 2, 3, 4, 5, 6];
// forEach
testList.forEach(print); // 依次打印值
// firstWhere
print(testList.firstWhere((e) => e > 3)); // 4 返回第一个满足条件的值
// lastWhere
print(testList.lastWhere((e) => e<6 )); // 5 重后往前找,返回第一个满足条件的值

排序

1
2
3
List listSort = [1,4,2,6,0];
listSort.sort();
print(listSort); // [0, 1, 2, 4, 6]

乱序

1
2
3
4
List listShuffle = [0, 1, 2, 3];
// shuffle 随机打乱数组
listShuffle.shuffle();
print(listShuffle); // [2, 0, 3, 1] 随机

判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final testList = <int>[0, 1, 2, 3, 4, 5];
// contains 是否包含
print(testList.contains(0)); // true
print(testList.contains(1)); // true
print(testList.contains(6)); // false

// 返回满足条件的值 返回值格式Iterable
print(testList.where((element) => element > 3)); // (4, 5)
// any 是否存在满足条件的值
print(testList.any((element) => element > 3)); // true
print(testList.any((element) => element > 6)); // false
// every 是否所以值都满足条件
print(testList.every((element) => element > 3)); // false
print(testList.every((element) => element < 6)); // true