控制语句4-1if语句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('不及格'); }}4-2for语句void main() { var list = [1, 2, 3, 4, 5]; // for循环 for (var index = 0; index < list.length; index++) { print(list[index]); } // 不需要使用下标时 可以使用这种方法遍历列表的元素 for (var item in list) { print(item); }}4-3while语句void main() { int c = 0; // 当c<5时就循环打印c 打完加1 while (c < 5) { print(c++); }// 先执行do再进行while循环 do { print(c--); } while (c > 0 && c < 5);}4-4break和continuevoid main() { var list = [1, 2, 3]; for (var i in list) { // if (i != 2) { // print(i); // } if (i == 2) { //跳出当前循环// break;// 打印1,3会跳过当前这种情况继续执行 continue; } print(i); } print('----------'); var list2 = [4, 5, 6]; for (var a in list2) { if (a == 5) { //只会终止自己所在的for循环 外边还有嵌套的for循环 不会终止 break; } print(a); }}4-5switch...case语句void main() { String lan = 'java'; // switch case 每个case后面要跟一个break;默认是default switch (lan) { case 'dart': print('dart is my fav'); break; case 'java': print('java is my fav'); break; default: print('none'); } switch (lan) { D: case 'dart': print('dart is my fav'); break; case 'java': print('java is my fav'); // 先执行当前case中的 然后跳转到D中的case继续执行 continue D; // break; default: print('none'); }}方法5-1方法的定义// void是没有返回值的 返回值类型:方法名(参数){return:返回值}//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true// 方法也是对象 并且有具体类型的function// 返回值类型 参数类型 都可以省略// 箭头语法简化代码 只适用于一个表达式// 方法都有返回值 没指定 return nullvoid main(List args) { print(args); print(geta('张三', 18)); printp('李四', 20);}// String geta(String name,int age){// return 'name=$name,age=$age';// }// =>箭头可以表示返回值 箭头后面可以跟表达式int gender = 2;geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';// 返回值类型 和参数类型可以省略 默认为void// printp(name,age){// print('name=$name,age=$age');// }void printp(String name, int age) { print('name=$name,age=$age');}5-2可选参数// void是没有返回值的 返回值类型:方法名(参数){return:返回值}//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true// 方法也是对象 并且有具体类型的function// 返回值类型 参数类型 都可以省略// 箭头语法简化代码 只适用于一个表达式// 方法都有返回值 没指定 return nullvoid main(List args) { print(args); print(geta('张三', 18)); printp('李四', 20);}// String geta(String name,int age){// return 'name=$name,age=$age';// }// =>箭头可以表示返回值 箭头后面可以跟表达式int gender = 2;geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';// 返回值类型 和参数类型可以省略 默认为void// printp(name,age){// print('name=$name,age=$age');// }void printp(String name, int age) { print('name=$name,age=$age');}5-3默认参数值void main() { // name=xxx,gender=null,age=null调用这个方法后两个参数可不传 printp('xxx');// name=xxx,gender=male,age=20{}根据命名来 printp('xxx', gender: 'male'); printp('xxx', age: 20);}// {int age=30,String gender='female'}设置默认参数printp(String name, {int age = 30, String gender = 'female'}) { print('name=$name,gender=$gender,age=$age');}### 5-4方法对象void main() { var func = printhello; Function func1 = printhello; func(); func1();// 方法作为一个参数进行传递 var list = [1, 2, 3, 4]; list.forEach(print); var list2 = ['a', 'b', 'c'];// [aaa, bbb, ccc一个方法 作为其他方法参数进行传递 print(listtimes(list2, times));}// dart中方法也都是对象 可以赋值给其他对象或变量void printhello() { print('hello');}List listtimes(List list, String times(str)) { for (var i = 0; i < list.length; i++) { list[i] = times(list[i]); } return list;}String times(str) { return str * 3;}5-5匿名方法void main() { // 匿名方法 可以通过赋值给对象或者方法来调用 // (){ // print('hello'); // }; // 匿名方法也可以传参 var func = (str) { print('hello----$str'); }; func(30); // 直接调用匿名方法 不推荐使用 (() { print('test不推荐'); })(); var list2 = ['a', 'b', 'c']; var result = listtimes(list2, (str) => str * 3); print(result); // listtimes(list2, (str){return str*3;});}List listtimes(List list, String times(str)) { for (var i = 0; i < list.length; i++) { list[i] = times(list[i]); } return list;}5-6闭包// 闭包是一个方法(对象)// 闭包定义在其他方法内部// 闭包能够访问外部方法中的局部变量,并持有其状态void main() { var func = a(); func(); func(); func(); func();}a() { int count = 0; //printCount是一个闭包 可以持有a中count的状态 也可以使用匿名方法 // printCount(){ // print(count++); // } // return printCount; // 匿名方法 return () { print(count++); };}