var
Dart中使用var申明一个变量,可以赋值不同的类型,var声明的变量如果没有初始化那么它的值为nil,我们按住command鼠标移动到变量a上可以看到提示dynamic a
void main() {var a;print(a);a = 1;print(a);a = 'hello world';print(a);}

final
使用final声明的只能赋值一次的变量。也可以叫做最终变量。
void main() {final b = 21;b = 'hello';}
如果我们再次赋值会报错,即使是同样类型的也不能。
tips:被final修饰的变量在使用之前必须要被赋值。
void main() {final b ;print(b);}

const
const修饰的常量在声明的时候就必须要赋值,这个是跟变量不同。当然也不能被修改。
void main() {const c;}
number
数值型numer: int & double
void main() {num a = 10;print(a);a = 1.5;print(a);}

一个整形的数据(int)是没有办法直接被赋值给double类型的。此时把a换成double类型就可以,用double修饰的话实际上是10.0
void main() {int a = 10;print(a);a = 1.5;print(a);}

关于int有一些语法,command点击就能查到,isEven偶数,isOdd奇数
void main() {int a = 10;print(a);print( a.isEven);}

算数运算符:+ - * / (四则) %(取模) ~/(取整)
void main() {int a = 10;int b = 8;int c = a + b;print( a.isEven);print(a ~/ b); /// 1print('a + b = ${a + b}'); /// 18print('a + b = $c'); /// 18}
如果a是double类型,可以先转成int类型toInt()
void main() {double a = 10;int b = 8;print(a.toInt().isEven);print(a.toInt() ~/ b);}
String
使用单引号和双引号创建
void main() {var a = 'hello';var b = "world";print(a + b);}
三个引号或者双引号可以创建多行字符串
void main() {String str1 = "hello""world""1hang""2hang";print(str1);String str2 ='''1hang2hang3hang''';print(str2);}
使用双引号可以看到这里并没有换行,需要手动添加\n,而三个引号修饰的会自动换行
在Dart语法中,字符串取值非常简单,可以直接采用下标。append可以直接使用+
void main() {String str1 = "hello";print(str1[0]);print(str1[1]);print(str1 + 'world');print(str1 * 2);}

Stirng中的转义字符
void main() {String str2 = 'h\nw';print(str2);String str3 = r'h\nw';print(str3);print(str2.length); /// 3print(str3.length); /// 4}/// 其他的用法:/// endsWith 以...结尾/// startsWith 以...开头
list
Dart中的列表,类似于OC中的数组。有可变和不可变list, 同时可以存放不同的数据类型。
void main() {var list1 = [1,2,3,'hello'];var list2 = const [1,2,3];print(list1);list1[3] = 'world';print(list1);print(list1.length);list1.add('value');print(list1);}
使用const修饰的是不可变的list,不能被重新赋值。
同时数组的增删改查也比较简单
list1.insert(0, 0);list1.removeAt(5);list1.clear();
void main() {var list1 = [1,4,2,5,3,9,7,6];list1.sort();print(list1);print(list1.sublist(1,5)); /// 包含前面不包含后面}

map
Dart中的map键值对,类似于OC中的字典。也有可变和不可变两种map
void main() {var json1 = {'one': 1, 'two': 2};var json2 = const {'one': 1, 'two': 2}; /// 不可变的一般实际中用到的非常之少print(json1['one']); /// 取值json1['one'] = 0; /// 赋值print(json1);// 常用的操作print(json1.length);print(json1.keys);print(json1.values);var list = ['hello', 'world'];print(list.asMap()); /// 数组转map}

