1.数据类型
Boolean
void main(){ bool isTrue = true; bool isFalse = false; print("Hello".isEmpty);}复制代码
Number
void main(){ num a = 10; a = 12.5; int b = 20;// b = 20.5; double c = 10.5;// c = 30; print(b + c); print(b - c); print(b * c); print(b / c); print(b ~/ c); print(b % c); print(0.0 / 0.0); print(b.isEven); print(b.isOdd); int d = 11; print(d.isEven); print(d.isOdd); int e = -100; print(e.abs()); double f = 10.5; print(f.round()); print(f.floor()); print(f.ceil()); print(f.toInt()); print(d.toDouble());}复制代码
String
void main(){ String str1 = 'Hello';//"" String str2 = '''Hello Dart''';//""" print(str2);// String str3 = 'Hello \n Dart'; String str3 = r'Hello \n Dart'; print(str3); String str4 = "This is my favorite language"; print(str4 + "New"); print(str4 * 5); print(str3 == str4); print(str4[1]); int a = 1; int b = 2; print("a + b = ${a + b}"); print("a = $a"); print(str4.length); print(str4.isEmpty); print(str4.contains("This")); print(str4.substring(0,3)); print(str4.startsWith("a")); print(str4.endsWith("ge")); var list = str4.split(" "); print(list); print(str4.replaceAll("This", "That"));}复制代码
Const
void main(){ var a; print(a); a = 10; print(a); a = 'Hello Dart'; print(a); var b = 20; print(b); final c = 30;// c = 50; const d = 20;// d = 50;}复制代码
List
void main(){ var list1 = [1,2,3,"Dart",true]; print(list1); print(list1[2]); list1[1] = "Hello"; print(list1); var list2 = const [1,2,3]; //不可变// list2[0] = 5; var list3 = new List(); var list = ["hello","dart"]; print(list.length); list.add("New"); print(list); list.insert(1, "Java"); print(list); list.remove("Java"); print(list);// list.clear();// print(list); print(list.indexOf("dart1")); list.sort(); print(list); print(list.sublist(1)); list.forEach(print);}复制代码
Map
void main(){ var map1 = { "first":"Dart",1:true,true:"2"}; print(map1); print(map1["first"]); print(map1[true]); map1[1] = false; print(map1); var map2 = const {1:"Dart",2:"Java"};//不可变// map2[1] = "Python"; var map3 = new Map(); var map = { "first":"Dart","second":"Java","third":"Python"}; print(map.length);// map.isEmpty; print(map.keys); print(map.values); print(map.containsKey("first")); print(map.containsValue("C")); map.remove("third"); print(map); map.forEach(f); var list = ["1","2","3"]; print(list.asMap());}void f(key,value){ print("key=$key,value=$value");}复制代码
dynamic
void main(){ var a; a = 10; a = "Dart"; dynamic b = 20; b = "JavaScript"; var list = new List (); list.add(1); list.add("hello"); list.add(true); print(list);}复制代码
2.运算符
operator_arithmetic
void main(){ int a = 10; int b = 2; print(a + b); print(a - b); print(a * b); print(a / b); print(a ~/ b); print(a % b); print(a++);//11 print(++a);//12 print(a--);//11 print(--a);//10}复制代码
operator_asignment
void main(){ int a = 10; int b = 5; b ??= 10; print(b); a += 2; print(a); a -= b; print(a); a *= b;// a /= b; a ~/= b; a %= b;}复制代码
operator_conditional
void main(){ int gender = 1; String str = gender == 0 ? "Male=$gender" :"Female=$gender"; print(str); String a = "Dart"; String b = "Java"; String c = a ?? b; print(c);}复制代码
operator_logical
void main(){ bool isTrue = true; print(!isTrue); bool isFalse = false; print(isTrue && isFalse); print(isTrue || isFalse); String str = ""; print(!str.isEmpty);}复制代码
operator_relational
void main(){ int a = 5; int b = 3; print(a == b); print(a !=b ); print(a > b); print(a < b); print(a >= b); print(a <= b); String strA = "123"; String strB = "123"; print(strA == strB);}复制代码
3.控制语句
break_and_continue
void main(){ var list = [1,2,3]; for(var item in list){ if(item == 2) {// break; continue; } print(item); } print("-----"); var list2 = [4,5,6]; for(var item1 in list){ if(item1 == 2){ break; } for(var item2 in list2){ if(item2 == 5){ break; } print(item2); } } }复制代码
stmt_assert
void main(){ String str; assert(str != null);}复制代码
stmt_for
void main(){ var list = [1,2,3,4,5]; for(var index = 0;index < list.length;index++){ print(list[index]); } print("---------"); for(var item in list){ print(item); }}复制代码
stmt_if
void main(){ int score = 100; if(score >= 90){ if(score == 100){ print("完美"); }else { print("优秀"); } }else if(score > 60){ print("良好"); }else if(score == 60){ print("及格"); }else { print("不及格"); }}复制代码
stmt_switch
void main(){ String language = "Java"; switch(language){ case "Dart": print("Dart is my favorite"); break; case "Java": print("Java is my favorite"); break; case "Python": print("Python is my favorite"); break; default: print("None"); } switch(language){ Test: case "Dart": print("Dart is my favorite"); break; case "Java": print("Java is my favorite"); continue Test;// break; case "Python": print("Python is my favorite"); break; default: print("None"); }}复制代码
stmt_while
void main(){ int count = 0; while(count < 5){ print(count++); } print("---$count----"); do{ print(count--); }while(count > 0 && count < 5);}复制代码
4.方法
function_declaration
void main(List args){ print(args); print(getPerson("张三", 18)); print(printPerson("李四", 20));}int gender = 1;getPerson(name,age) => gender == 1 ? "name=$name,age=$age":"Test";printPerson(name,age){ print("name=$name,age=$age");}复制代码
function_optional_param可选参数
void main(){ printPerson("李四"); printPerson("李四",age: 20); printPerson("李四",age: 20,gender: "Male"); printPerson("李四",gender: "Male"); printPerson2("张三"); printPerson2("张三",18); printPerson2("张三",18,"Female");}printPerson(String name,{int age,String gender}){ print("name=$name,age=$age,gender=$gender");}printPerson2(String name,[int age,String gender]){ print("name=$name,age=$age,gender=$gender");}复制代码
function_default_param默认参数
void main(){ printPerson("李四"); printPerson("李四",age: 20); printPerson("李四",gender: "Male");}printPerson(String name,{int age = 30,String gender = "Female"}){ print("name=$name,age=$age,gender=$gender");}复制代码
function_object方法对象
void main(){ Function func = printHello; func(); var list = [1,2,3,4]; list.forEach(print); var list2 = ["h","e","l","l","o"]; print(listTimes(list2, times));}void printHello(){ print("Hello");}List listTimes(List list ,String times(str)){ for(var index = 0;index < list.length;index++){ list[index] = times(list[index]); } return list;}String times(str){ return str*3;}复制代码
function_anonymous匿名方法
void main(){ var func = (str){ print("Hello---$str"); }; func(30);// ((){// print("Test");// })(); var list2 = ["h","e","l","l","o"]; var result = listTimes(list2, (str){ return str * 3;}); print(result); print(listTimes2(list2));}List listTimes(List list ,String times(str)){ for(var index = 0;index < list.length;index++){ list[index] = times(list[index]); } return list;}List listTimes2(List list ){ var func = (str){ return str * 3;}; for(var index = 0;index < list.length;index++){ list[index] = func(list[index]); } return list;}复制代码
function_closure闭包
void main(){ var func = a(); func(); func(); func(); func();}a(){ int count = 0;// printCount(){// print(count++);// } return (){ print(count++); };}复制代码
5.面向对象
class_and_object类与对象
import 'person.dart';void main() { var person = new Person(); person.name = "Tom"; person.age = 20; print(person.name); print(person.address); person.work();}复制代码
//person.dartclass Person { String name; int age; final String address = ""; void work(){ print("Name is $name,Age is $age,He is working..."); }}复制代码
calculated_property计算属性
void main() { var rect = new Rectangle(); rect.height = 20; rect.width = 10; print(rect.area); rect.area = 200; print(rect.width);}class Rectangle{ num width,height; num get area => width * height; set area(value){ width = value / 20; }}复制代码
constructors构造方法
void main() { var person = new Person("Tom",20,"Male"); new Person.withName("John"); new Person.withAge(20);}class Person{ String name; int age; final String gender; Person(this.name,this.age,this.gender); Person.withName(String name){ this.name = name; } Person.withAge(this.age); void work(){ print("Work..."); }}复制代码
const_constructors常量构造方法
void main() { const person = const Person("Tom",20,"Male"); person.work();}class Person{ final String name; final int age; final String gender; const Person(this.name,this.age,this.gender); void work(){ print("Work..."); }}复制代码
factory_constructors工厂构造方法
class Logger { final String name; static final Map _cache = {}; factory Logger(String name) { if (_cache.containsKey(name)) { return _cache[name]; } else { final logger = Logger._internal(name); _cache[name] = logger; return logger; } } Logger._internal(this.name); void log(String msg) { print(msg); }}复制代码
init_list初始化列表
void main() { var person = new Person("Tom", 20, "Male");}class Person{ String name; int age; final String gender; Person(this.name,this.age,this.gender); Person.withMap(Map map): name = map["name"],gender = map["gender"]{ age = map["age"]; } void work(){ print("Work..."); }}复制代码
static_member静态成员
void main() { var page = new Page(); Page.scrollDown();}class Page{ static const int maxPage = 10; static int currentPage = 1; //下滑 static void scrollDown(){ currentPage = 1; print("ScrollDown..."); } //上滑 void scrollUp(){ currentPage++; print("scrollUp..."); }}复制代码
object_operator对象操作符
void main() {// Person person = new Person();// person?.name;// var person;// person = "";// person = new Person();// (person as Person).work();// if (person is Person){// person.work();// } new Person() ..name = "Tom" ..age = 20 ..work();}class Person{ String name; int age; void work(){ print("Work...$name,$age"); }}复制代码
object_call对象call
void main() { var person = new Person(); print(person("Test",30));}class Person{ String name; int age;// void work(){// print("Name is $name,Age is $age");// } String call(String name,int age){ return "Name is $name,Age is $age"; }}复制代码
6.面向对象扩展
继承
import 'person.dart';void main() {// var student = new Student();// student.study();//// student.name = "Tom";// student.age = 16;//// print(student.isAdult);//// student.run(); Person person = new Student(); person.name = "Tom"; person.age = 18; if(person is Student){ person.study(); } print(person);}class Student extends Person{ void study(){ print("Student study..."); } @override bool get isAdult => age > 15; @override void run() { print("Student run..."); }}复制代码
class Person { String name; int age; String _birthday; bool get isAdult => age > 18; void run(){ print("Person run..."); } @override String toString() { return "Name is $name,Age is $age"; }}复制代码
继承中的构造方法
void main() { var student = new Student("Tom","Male"); print(student.name);}class Person{ String name; Person(this.name); Person.withName(this.name);}class Student extends Person{ int age; final String gender; Student(String name,String g) : gender = g, super.withName(name);}复制代码
抽象类
void main() { var person = new Student(); person.run();}abstract class Person{ void run();}class Student extends Person{ @override void run() { print("run..."); }}复制代码
接口
void main() { var student = new Student(); student.run();}//class Person{// String name;//// int get age => 18;//// void run(){// print("Person run...");// }//}abstract class Person{ void run();}class Student implements Person{ @override void run() { print("Student run..."); }}复制代码
mixins
void main() {// var d = new D();// d.a();}//class A{// void a(){// print("A.a()...");// }//}////class B{//// void a(){// print("B.a()...");// }//// void b(){// print("B.b()...");// }//}////class Test{}//////class C{//// void a(){// print("C.a()...");// }//// void b(){// print("C.b()...");// }//// void c(){// print("C.c()...");// }//}////class D extends A with C,B{////}abstract class Engine{ void work();}class OilEngine implements Engine{ @override void work() { print("Work with oil..."); }}class ElectricEngine implements Engine{ @override void work() { print("Work with Electric..."); }}class Tyre{ String name; void run(){}}class Car = Tyre with ElectricEngine;class Bus = Tyre with OilEngine;复制代码
操作符覆写
void main() { var person1 = new Person(20); var person2 = new Person(20); print(person1 > person2); person1.age; print(person1['age']); print(person1 == person2);}class Person{ int age; Person(this.age); bool operator >(Person person){ return this.age > person.age; } int operator [](String str){ if("age" == str){ return age; } return 0; } @override bool operator ==(Object other) => identical(this, other) || other is Person && runtimeType == other.runtimeType && age == other.age; @override int get hashCode => age.hashCode;}复制代码
7.枚举
enum
void main() { var currentSeason = Season.winter; print(currentSeason.index); switch(currentSeason){ case Season.spring: print("1-3月"); break; case Season.summer: print("4-6月"); break; case Season.autumn: print("7-9月"); break; case Season.winter: print("10-12月"); break; }}enum Season{ spring, summer, autumn, winter}复制代码
8.泛型
generics
void main() { var list = new List (); list.add(1);// var utils = new Utils ();// utils.put(1); var utils = new Utils(); utils.put (1);}class Utils{ void put (T element){ print(element); }// void putString(String element){// this.elementStr = element;// }}复制代码