控制语句

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和continue

void 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++);  };}