var如果变量没有设置初始值,Dart 会将其推断为动态类型,允许赋值为任意类型的值。
var  a; print (a); a = 'str' ; a = 666 ; a = true ; a = {}; a = []; print (a); 
如果设置了初始值,只能设置和初始值同样的类型
var  a = 'jay' ;a = 'hi' ; a = 888 ;   
Object动态任意类型
Object  a = 'jay' ;a = 123 ; a = {}; a.p();  
dynamic动态任意类型
dynamic  a = 'jay' ;a = 123 ; a = []; a.p(); 
constconst  String  a = 'jay' ;const  b = 'jay' ;const  a = 123 ;const  b; const  a = 123 ;a = 456 ;  const  b = DateTime .now();  const  list = [1 , 2 , 3 ];list[1 ] = 4 ;  const  a1 = [11  , 22 ];const  a2 = [11  , 22 ];print (identical(a1, a2)); 
finalfinal  String  a = 'jay' ;final  b = 'jay' ;final  a;print (a); a = 666 ; print (a);final  b = 'jay' ;b = 'hi' ;  final  a = DateTime .now();const  list = [1 , 2 , 3 ];list[1 ] = 4 ; final  a1 = [11  , 22 ];final  a2 = [11  , 22 ];print (identical(a1, a2)); 
int  a = 1 ;  double  b = 0.1 ;  num  c = 123 ;  
int  a = int .parse("123" );double  c = double .parse("1.1" );String  d = 123. toString();String  e = 1.1 .toString();int  f = 1.1 .toInt();
String  str1 = 'jay,\'single\' "double"' ;String  str2 = "jay,'single' \"double\"" ;
var  a = 'jay' ;String  b = 'hi, ${a} ' ;  print (b);  
var  a = 'hi'  ','  ' jay' ;var  b = 'hi'  + ','  + ' jay' ;var  c = 'hi'     ','  	' jay' ; print (a);  print (b);  print (c);  var  str = ''' 	hi\n, 	jay ''' ;print (str);var  str2 = r''' 	hi\n, 	jay ''' ;print (str2);
var  a = 'hi, jay' ;print (a.contains('j' ));  print (a.startsWith('hi' ));  print (a.endsWith('jay' ));  print (a.indexOf('jay' ));  print (a.substring(1 ,5 ));  var  b = a.split(', ' );print (b);  print (a.toLowerCase());  print (a.toUpperCase());  print (' HI, JAY ' .trim()); print ('' .isEmpty);  print ('' .isNotEmpty);  print (a.replaceAll('jay' , 'tom' ));  StringBuffer ()..write('hi' ) ..write(',' ) ..write('jay. ' ) ..writeAll(['hi' , ',' , 'tom' ])   
var  now = new  DateTime .now();var  datetime = new  DateTime (2000 , 1 , 1 , 1 , 10 );var  utc = DateTime .utc(2000 , 1 , 1 , 1 , 10 );
var  date = DateTime .parse('2000-01-01 06:30:00Z' );var  date2 = DateTime .parse('2000-01-01 06:30:00+0800' );print (date);  print (date2);  
var  date = DateTime .now().add(Duration (days: 1 ));
var  now = DateTime .now();var  date = now.add(Duration (days: 1 ));print (now.isAfter(date));  print (now.isBefore(date));  print (now.difference(date));  
var  now = DateTime .now();print (now.millisecondsSinceEpoch);  print (now.microsecondsSinceEpoch);  
var  list = [1 , 2 , 3 ];List <int > list2 = [];list2 	..add(1 ) 	..add(2 ) 	..add(3 ); var  list = List <int >.filled(3 , 0 );list[3 ] = 666 ;   
var  list = List .generate(3 , (i) => i + 1 );  
var  list = [1 , 2 , 3 ];print (list.first);  print (list.last);  print (list.length);  print (list.isEmpty);  print (list.isNotEmpty);  print (list.reversed);  
名称 
说明 
 
 
add 
添加 
 
addAll 
添加多个 
 
insert 
插入 
 
insertAll 
插入多个 
 
indexOf 
查询 
 
indexWhere 
按条件查询 
 
remove 
删除 
 
removeAt 
按位置删除 
 
fillRange 
按区间填充 
 
getRange 
按区间获取 
 
shuffle 
随机变换顺序 
 
sort 
排序 
 
sublist 
创建子列表 
 
 
List <int > list = [];list 	..add(1 )   	..addAll([2 , 3 ])   	..insert(0 , 0 )   	..insertAll(4 , [4 , 5 ]);   print (list.indexOf(2 ));  print (list.indexWhere((i) => i > 2 ));  print (list.indexWhere((i) {	return  i > 2 ; }));   list.remove(4 ); print (list);  list.removeAt(0 ); print (list);  list.fillRange(1 , 3 , 66 ); print (list);  print (list.getRange(1 , 3 ));  list.shuffle(); print (list);  list.sort(); print (list);  list.sort(); print (list);  list.sort((a, b) => b - a); print (list);  List <DateTime > dtList = [];dtList.addAll([   DateTime .now(),   DateTime .now().add(new  Duration (days: -12 )),   DateTime .now().add(new  Duration (days: -2 ))   ]); print (dtList); dtList.sort((a, b) => a.compareTo(b)); print (dtList); var  l = [1 , 2 , 3 , 4 , 5 , 6 ];var  sl = l.sublist(1 , 3 );print (sl);  var  l1 = [1 , 2 , 3 ];var  l2 = [4 , 5 , 6 ];print (l1 + l2);  
var  a = { 'key' : 'value'  };
var  a = {};a['name' ] = 'jay' ; a['age' ] = 66 ; a[1 ] = 123 ; print (a); 
var  a = Map <String , String >();a['name' ] = 'jay' ; a['age' ] = 66 ;  a[1 ] = 123 ;  print (a);
var  a = { 'name' : 'jay'  };print (a.isEmpty); print (a.isNotEmpty); print (a.keys); print (a.values); print (a.length); print (a.entries); 
名称 
说明 
 
 
addAll 
添加 
 
addEntries 
从入口添加 
 
containsKey 
按 key 查询 
 
containsValue 
按 value 查询 
 
clear 
清空 
 
remove 
删除 
 
removeWhere 
按条件删除 
 
update 
更新某个 
 
updateAll 
按条件更新 
 
 
var  a = {};var  b = { 'key' : 'value'  };a.addAll({ 'name' : 'jay' , 'age' : 66  });  a.addEntries(b.entries);  print (a.containsKey('name' )); print (a.containsValue(66 )); a.update('name' , (val) => 'tom' );  a.updateAll((key, val) => "值为:$val " );  a.remove('name' );  a.removeWhere((key,val) => key == 'key' );  a.clear();  
var  a = Set ();var  b = <dynamic >{};
var  list = ['tom' , 'jerry' , 'jay' , 'tom' ];var  names = <dynamic >{};names.addAll(list); print (names); print (names.toList()); 
var  a = Set ();a.addAll(['tom' , 'jerry' , 'jay' ]); print (a.first);  print (a.last);  print (a.length);  print (a.isEmpty);  print (a.isNotEmpty);  
名称 
说明 
 
 
addAll 
添加 
 
contains 
查询单个 
 
containsAll 
查询多个 
 
difference 
集合不同 
 
intersection 
交集 
 
union 
联合 
 
lookup 
按对象查询到返回对象 
 
remove 
删除单个 
 
removeAll 
删除多个 
 
clear 
清空 
 
firstWhere 
按条件正向查询 
 
lastWhere 
按条件反向查询 
 
removeWhere 
按条件删除 
 
retainAll 
只保留几个 
 
retainWhere 
按条件只保留几个 
 
 
var  a = <String >{'jay' , 'tom' , 'jerry' , 'echo' };var  b = <String >{'jay' , 'bob' , 'trump' , 'echo' };print (a.intersection(b)); print (a.union(b)); 
enum  StatusType {	success, 	error, 	failed, } 
int  add(int  n) {	return  x + 1 ; } add(1 ); 
int  example(int  a, [int  b = 2 , int  c = 3 ]) {	return  a + b + c; } example(1 );  example(1 , 3 );  example(1 , 3 , 5 );  
int  example(int  a, {int  b = 2 , int  c = 3 }) {	return  a + b + c; } example(1 );  example(1 , c: 5 );  example(1 , b: 3 );  example(1 , b: 3 , c: 5 );  
Function  example(int  a) {	return  (int  b){ 		return  a + b; 	}; } example(1 )(1 );  
操作符 
说明 
 
 
expr++ expr-- () . ?.后缀操作 
 
-expr !expr ~expr ++expr --expr前缀操作 
 
* / % ~/乘除 
 
+ -加减 
 
<< >>位移 
 
&按位与 
 
^按位异或 
 
| 
按位或 
 
>= > <= < as is is!类型操作 
 
== != 
相等 
 
&&逻辑与 
 
|| 
逻辑或 
 
??是否为空 
 
expr1 ? expr2 : expr3三目运算 
 
..级联 
 
=  *=  /=  ~/=  %=  +=  -=  <<=  >>=  &=  ^=  |=  ??= 
赋值 
 
上边 的优先级高于下边 的优先级,左边 的优先级高于右边 的优先级 
 
操作符 
说明 
 
 
as类型转换 
 
is如果对象是指定的类型返回 True 
 
is!如果对象是指定的类型返回 False 
 
 
int  n = 123 ;String  str = 'jay' ;print (n as  Object );print (str is  String ); print (str is ! String ); 
bool  isTrue = true ;String  str = isTrue ? 'T'  : 'F' ;print (str); 
String  name = 'jay' ;bool  b = true ;if  (b) {	print ('true' ); } else  { 	print ('false' ); } if  (name == 'jay' ) {	print ('jay' ); } 
var  list = [1 , 2 , 3 , 4 , 5 ];for  (var  i = 0 ; i < list.length; i++) {  print (i); } 
int  i = 0 ;while (i < 5 ) {  print (i);   i++; } 
bool  isRunning = true ;do  {  print ('is running' );   isRunning = false ; } while  (isRunning); 
String  name = 'jay' ;switch  (name) {  case  'jay' :     print ('jay' );     break ;   default :     print ('not find' ); } 
for  (var  i = 0 ; i < 5 ; i++) {	if  (i == 2 ) { 		break ;  	} 	print (i);  } int  i = 0 ;while (i < 5 ) {	if  (i < 2 ) { 		break ;  	} 	print (i);  	i++; } 
for  (var  i = 0 ; i < 5 ; i++) {	if  (i == 2 ) { 		continue ;  	} 	print (i);  } String  command = 'close' ;switch  (command) {  case  'open' :     print ('open' );     break ;   case  'close' :     print ("close" );      continue  doClear;   case  'close2' :     print ('close2' );     continue  doClear;   doClear:   case  'doClose' :     print ('doClose' );      break ;   default :     print ('other' ); } 
名称 
说明 
 
 
DeferredLoadException延迟加载错误 
 
FormatException格式错误 
 
IntegerDivisionByZeroException整数除零错误 
 
IOExceptionIO 错误 
 
IsolateSpawnException隔离产生错误 
 
TimeoutException超时错误 
 
 
名称 
说明 
 
 
AbstractClassInstantiationError抽象类实例化错误 
 
ArgumentError参数错误 
 
AssertionError断言错误 
 
AsyncError异步错误 
 
CastErrorCast 错误 
 
ConcurrentModificationError并发修改错误 
 
CyclicInitializationError周期初始错误 
 
FallThroughErrorFall Through 错误 
 
JsonUnsupportedObjectErrorJSON 不支持错误 
 
NoSuchMethodError没有这个方法错误 
 
NullThrownErrorNull 错误错误 
 
OutOfMemoryError内存溢出错误 
 
RemoteError远程错误 
 
StackOverflowError堆栈溢出错误 
 
StateError状态错误 
 
UnimplementedError未实现的错误 
 
UnsupportedError不支持错误 
 
 
throw  new  FormatException('这是一个格式错误提示' );throw  new  OutOfMemoryError();throw  '这是一个异常' ;
try  {     throw  new  OutOfMemoryError(); } on  OutOfMemoryError {      print ('没有内存了' );   rethrow ;  } catch  (e) {   print (e);  } finally  {   print ('finally' );  } 
class  Human    String  name;   num  age;   Map  other;      Human(this .name, this .age) : other = {'skin' : 'yellow' };   @override    String  toString() {          return  '$name , $age , $other ' ;   }      call(String  msg) { 	  print ('$msg ' );   } } void  main() {  var  jay = Human('jay' , 18 );   print (jay);    jay('hello world' );  } 
class  Human    String  name;   num  age;   Map  other;   Human.fromJson(Map  json)       : name = json['name' ],         age = json['age' ],         other = {'skin' : 'yellow' , 'death' : json['age' ] + 100 };   @override    String  toString() {          return  '$name , $age , $other ' ;   } } void  main() {  var  jay = Human.fromJson({'name' : 'jay' , 'age' : 18 });   print (jay);  } 
class  Human    String  name;   num  age;   Map  other;   Human(this .name, this .age) : other = {'skin' : 'yellow' };   Human.fromJson(Map  json) : this (json['name' ], json['age' ]);   @override    String  toString() {          return  '$name , $age , $other ' ;   } } void  main() {  var  jay = Human.fromJson({'name' : 'jay' , 'age' : 18 });   print (jay);  } 
class  Human    String?  _name;       set  name(String  val) {     _name = val;   }         String  get  name {     return  'name is $_name ' ;   } } void  main() {  var  p = Human();   p.name = 'jay' ;   print (p.name);  } 
class  Human       static  String  name = 'default name' ;      static  void  printName() {     print ('name is $name ' );   } } void  main() {  print (Human.name);    Human.printName();  } 
abstract  class  Human    String  name = 'default name' ;   void  printName() {     print ('name is $name ' );   } } class  Man  extends  Human  } class  Woman  implements  Human    @override    String  name;   Woman(this .name);   @override    void  printName() {     print ('this woman\'s name is $name ' );   } } var  jay = Man();jay.printName();  var  echo = Woman('echo' );echo.printName();     var  p = Human(); 
abstract  class  IHuman    String  name = 'default name' ;   String  printName() {     return  'name is $name ' ;   } } abstract  class  ITools    String  toolName = 'default toolName' ;   String  useTools() {     return  'using tools' ;   } } class  Man  implements  IHuman , ITools    @override    String  name;   String  toolName;   Man(this .name, this .toolName);   @override    String  printName() {     return  'This man\'s name is $name ' ;   }   @override    String  useTools() {     return  '$name  using a $toolName ' ;   } } void  makeHumanInfo(IHuman p) => print (p.printName());void  makeToolsInfo(ITools p) => print (p.useTools());void  main() {  var  jay = Man('jay' , 'pen' );   print (jay.printName());   print (jay.useTools());   makeHumanInfo(jay);   makeToolsInfo(jay); } 
class  Human    String  name;   Human(this .name);   void  sayHi() {     print ('hello' );   }   void  run() {     print ('run' );   }   void  useTools() {     print ('using tools' );   } } class  Man  extends  Human    Man(String  name) : super (name);    @override    void  run() {     super .run();      print ('this man can run' );   }   @override    void  useTools() {     print ('this man can use tools' );   }   @override    void  noSuchMethod(Invocation mirror) {     print ('noSuchMethod' );   } } void  main() {  var  p = Man('jay' );   p.sayHi();    p.run();    p.useTools();    dynamic  tom = Man('tom' );   tom.xxx();  } 
abstract  class  Human    void  run();   void  useTools();   factory  Human(String  gender) {     switch  (gender) {       case  'man' :         return  Man();       case  'woman' :         return  Woman();       default :         throw  'gender error' ;     }   } } class  Man  implements  Human    @override    void  run() {     print ('this man can run' );   }   @override    void  useTools() {     print ('this man can use tools' );   } } class  Woman  implements  Human    @override    void  run() {     print ('this woman can run' );   }   @override    void  useTools() {     print ('this woman can use tools' );   } } void  main() {  var  man = Human('man' );   var  woman = Human('woman' );   man.run();    man.useTools();    woman.run();    woman.useTools();  } 
class  Human       static  final  Human _instance = Human._internal();   Human._internal();      factory  Human() {     return  _instance;   }   void  useTools() {     print ('use tools' );   } } void  main() {  var  p1 = Human();   var  p2 = Human();   print (identical(p1, p2));    Human().useTools();  } 
class  Human    String  _name;   Human(this ._name);   factory  Human.fromJson(Map <String , dynamic > json) =>       Human(json['name' ] as  String );      void  printName() {     print ('$_name ' );   } } void  main() {  var  p = Human.fromJson({'name' : 'jay' });   p.printName();  } 
mixin  Animal {  void  sleep() {     print ('Animal sleep' );   } } mixin  Human {  void  sleep() {     print ('Human sleep' );   }   void  useTools() {     print ('Human use tools' );   } } mixin  People on  Human {  void  sleep() {          super .sleep();     print ('People sleep' );   }   void  run() {     print ('People run' );   } } class  Man  with  Animal , Human , People  void  main() {  var  p = Man();      p.sleep();    p.run();    p.useTools();  } 
void  main() {  var  str = <String >[];   str.add('hi' );      var  map = <String , String >{};   map['a' ] = 'hi' ;    } 
V returnValue<K, V>(K key, V val) {   return  val; } void  main() {  returnValue('name' , 123 );   returnValue<String , int >('name' , 123 ); } 
class  Phone <T >   final  T number;   Phone(this .number); } void  main() {  var  number = Phone('12333333' );   print (number);   var  number2 = Phone(123444445 );   print (number2); } 
class  Man    void  sleep() {     print ('Man sleep' );   } } class  Human <T  extends  Man >   final  T people;   Human(this .people); } void  main() {  var  p = Man();   var  h = Human<Man>(p);   h.people.sleep(); } 
import  'dart:html' ; void  main() {     HttpRequest.getString(     'https://api.github.com/search/users?q=jay' ,   ).then((response) {     print (response);   }); } 
import  'dart:html' ; void  main() async  {     final  data = await  HttpRequest.getString(     'https://api.github.com/search/users?q=jay' ,   );   print (data);  } 
Iterable <int > naturalsTo(int  n) sync * {  print ('start' );   int  k = 0 ;   while  (k < n) {     yield  k++;    }   print ('end' ); } main() {   var  it = naturalsTo(3 ).iterator;   it.moveNext();    print (it.current);    it.moveNext();   print (it.current);    it.moveNext();   print (it.current);    it.moveNext();           } 
import  'dart:async' ;Stream<int > asynchronousNaturalsTo(int  n) async * {   print ('start' );   int  k = 0 ;   while  (k < n) {     yield  k++;   }   print ('end' ); } main() {                  StreamSubscription subscription = asynchronousNaturalsTo(3 ).listen(null );   subscription.onData((value) {     print (value);        }); } 
Iterable <int > naturalsDownFrom(int  n) sync * {  print ('start' );   if  (n > 0 ) {     yield  n;          yield * naturalsDownFrom(n - 1 );   }   print ('end' ); } main() {   var  it = naturalsDownFrom(3 ).iterator;   it.moveNext();    print (it.current);    it.moveNext();    print (it.current);    it.moveNext();    print (it.current);    it.moveNext();           } 
typedef  MyMap = Map <String , String >;typedef  MyList = List <int >;typedef  MyAdd = int  Function (int  a, int  b);class  MyClass       MyAdd add;   MyClass(this .add); } void  main() {  MyMap m = {'name' : 'jay' };   m['age' ] = '18' ;   print (m);    MyList list = [1 , 2 , 3 ];   list.add(4 );   print (list);    MyAdd add = (a, b) => a + b;   print (add(1 , 2 ));    MyClass c = MyClass(add);   print (c.add(6 , 6 ));  } 
String?  name;List <String >? list; List <String? > list2;
String?  name;String  userName = name!;
String  type = status ?? 'default' ;
import  'package:intl/intl.dart' ;extension  ExDateTime on  DateTime  {     String  toDateString({String  format = 'yyyy-MM-dd' }) =>       DateFormat(format).format(this );      int  get  nowTicket => this .microsecondsSinceEpoch; } main() {   var  now = DateTime .now();   print (now.toDateString());   print (now.nowTicket); } 
import  'dart:io' ;import  'package:intl/intl.dart' ;import  'package:demo_project/demo.dart' ;import  'package:demo_project/demo.dart'  as  d;import  'package:demo_project/demo.dart'  show  <package name>;import  'package:demo_project/demo.dart'  hide  <package name>;import  'package:demo_project/demo.dart'  deferred  as  d;main() async  {   await  d.loadLibrary();  } 
通过 dart pub get 安装 pubspec.yaml 文件里的依赖