内置类型:
数据类型:num 
字符串类型:String 
布尔类型:bool 
列表类型:list 
集合类型:Set 
映射类型:Map 
Unicode:Runes 
标识符:Symbols 
 
Numbers Dart 中数字类型用于表示数字文字,Dart 中的数字类型分为整数和双精度数两种,整数值不大于64位, 具体取决于平台。
Dart支持两种Number类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 int  i = 11111 ;double  d = 123123123 ;var  one = int .parse('1' );assert (one == 1 );var  onePointOne = double .parse('1.1' );assert (onePointOne == 1.1 );String  oneAsString = 1. toString();assert (oneAsString == '1' );String  piAsString = 3.14159 .toStringAsFixed(2 );assert (piAsString == '3.14' );assert ((3  << 1 ) == 6 ); assert ((3  | 4 ) == 7 ); assert ((3  & 4 ) == 0 ); 
Strings Dart 字符串是 UTF-16 编码的字符序列。 可以使用单引号或者双引号来创建字符串,单引号和双引号可以嵌套使用,否则需要使用\进行转义。字符串中也可以引用变量与表达式。
在字符串中,请以 ${表达式} 的形式使用表达式,如果表达式是一个标识符,可以省略掉 {}。如果表达式的结果为一个对象,则 Dart 会调用该对象的 toString 方法来获取一个字符串。
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 var  name = 'zhangsan' ;var  a = "my name is $name !" ;var  b = "my name is ${name.toUpperCase()} !" ;var  a  = "my name is "  "zhangsan" ;var  c = "my name is"  + "zhangsan" ;var  s1 = ''' You can create multi-line strings like this one. ''' ;var  s2 = """This is also a multi-line string.""" ;print (r"换行符:\n" ); print ("换行符:\\n" ); var  s1 = 'String '     'concatenation'      " works even over line breaks." ; assert (s1 ==    'String concatenation works even over '          'line breaks.' ); var  s2 = 'The + operator '  + 'works, as well.' ;assert (s2 == 'The + operator works, as well.' );
布尔类型 有一个名字为 bool 的类型。 只有两个对象是布尔类型的:true 和 false
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var  fullName = '' ;assert (fullName.isEmpty);var  hitPoints = 0 ;assert (hitPoints <= 0 );var  unicorn;assert (unicorn == null );var  iMeantToDoThis = 0  / 0 ;assert (iMeantToDoThis.isNaN);
Lists Dart中,数组(Array)由List对象表示
length:返回当前List的长度。 
isEmpty:判断是否为空,返回bool类型的值。 
isNotEmpty:判断是否为不空,返回bool类型的值。 
reversed:倒序输出List中的值。输出结果并不是一个List,需要使用toList()方法将其在转换成List。 
 
常用方法:
add(VALUE):向List中添加单个数据。 
addAll([ARRAY]):以数组的形式向List中添加多个数据。 
indexOf(ELEMENT):查找ELEMENT是否在List中。如果存在,返回其索引值;如果是不存在,返回 -1。 
remove(ELEMENT):删除ELEMENT。 
removeAt(INDEX):删除索引值为INDEX的值。 
fillRange(START,END,[ VALUE]):将[START,END)范围内的值改为[VALUE]的值。   
insert(INDEX,VALUE):在INDEX处插入VALUE。 
insert(INDEX,LIST):在INDEX处插入LIST。 
join(SYMBOL):以SYMBOL将LIST隔开,并以String类型返回。 
STRING.split(SYMBOL):将字符串以SYMBOL进行切割,并以List类型返回。 
 
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 var  list = [1 , 2 , 3 ,]; print (list[list.length-1 ]);list[0 ] = 2 ; var  list = new  List (1 );list[0 ] = 2 ; var  list =  const  [1 ,2 ,3 ];i.add(2 );  List <int > list2 = const  [1 ,2 ,3 ];list2 = [1 ,2 ,3 ,4 ]; print (list2);const  List <int > list3 = [4 ,5 ,6 ];print (list3);
Dart 在 2.3 引入了 扩展操作符(…)和 空感知扩展操作符(…?),它们提供了一种将多个元素插入集合的简洁方法。
例如,你可以使用扩展操作符(…)将一个 List 中的所有元素插入到另一个 List 中:
1 2 3 var  list = [1 , 2 , 3 ];var  list2 = [0 , ...list];assert (list2.length == 4 );
如果扩展操作符右边可能为 null ,你可以使用 null-aware 扩展操作符(…?)来避免产生异常:
1 2 3 var  list;var  list2 = [0 , ...?list];assert (list2.length == 1 );
Dart 还同时引入了 集合中的 if 和 集合中的 for 操作,在构建集合时,可以使用条件判断 (if) 和循环 (for)。
1 2 3 4 5 6 7 8 9 10 11 12 13 var  nav = [  'Home' ,   'Furniture' ,   'Plants' ,   if  (promoActive) 'Outlet'  ]; var  listOfInts = [1 , 2 , 3 ];var  listOfStrings = [  '#0' ,   for  (var  i in  listOfInts) '#$i '  ]; assert (listOfStrings[1 ] == '#1' );
Maps 键值对相关的对象。 键和值可以是任何类型的对象。每个键只出现一次, 而一个值则可以出现多次。Dart 中 Map 提供了 Map 字面量以及 Map 类型两种形式的 Map。
Map的不同类型:
HashMap是无序的,这意味着它迭代的顺序是不确定的 
LinkedHashMap按key的插入顺序进行迭代 
SplayTreeMap按key的排序顺序进行迭代 
 
当Map的一个操作正在执行的时候,通常不允许修改Map(添加或删除key)
1 2 3 4 5 6 7 8 9 10 11 12 13 var  companys = {'a' : '阿里巴巴' , 't' : '腾讯' , 'b' : '百度' };var  companys2 = new  Map ();companys2['a' ] = '阿里巴巴' ; companys2['t' ] = '腾讯' ; companys2['b' ] = '百度' ; companys['j' ] = '京东' ; var  c = companys['c' ]; companys['a' ] = 'alibaba' ;  
Sets 在 Dart 中,set 是一组特定元素的无序集合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 var  names = <String >{};Set <String > set  = {'aaa' , 'bbb' };for (var  item in  set ) {    print (item); } set .forEach((element) {    print (element); }); if  (set .contains("aaa" )) {    print ("包含元素" ); } set .clear();
Runes 在 Dart 中,runes 公开了字符串的 Unicode 码位。使用 characters 包 来访问或者操作用户感知的字符,也被称为 Unicode (扩展) grapheme clusters。
如果需要获得特殊字符的Unicode编码,或者需要将32位的Unicode编码转换为字符串,就可以借助Runes类。
Dart表达Unicode代码点的常用方法是\uXXXX,其中XXXX是4位十六进制值。要指定多于或少于4个十六进制数字,需要将值放在大括号中。
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 var  clapping = '\u{1f44f}' ; print (clapping);print (clapping.codeUnits); print (clapping.runes.toList()); print ( String .fromCharCode(128079 ));print ( String .fromCharCodes(clapping.runes));print ( String .fromCharCodes([55357 , 56399 ]));print ( String .fromCharCode(0x1f44f ));Runes input = new  Runes(   '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}' ); print (String .fromCharCodes(input));import  'package:characters/characters.dart' ;... var  hi = 'Hi 🇩🇰' ;print (hi);print ('The end of the string: ${hi.substring(hi.length - 1 )} ' );print ('The last character: ${hi.characters.last} \n' );
Symbols Symbol 表示 Dart 中声明的操作符或者标识符。 可以看作C中的宏。表示编译时的一个常量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var  i = #A; main() {   print (i);   switch (i){     case  #A:       print ("A" );       break ;     case  #B:       print ("B" );       break ;   }   var  b = Symbol ("b" );   print (#b == b);  } 
参考