Flutter学习笔记

Dart值得注意的知识点(一)

2020-04-12  本文已影响0人  WinJayQ

1. dynamic的使用

  dynamic name = 'WinJayQ';
  print(name.runtimeType);//String

  name = 18;
  print(name.runtimeType);//int

2.final&const的使用

2.1 final和const有什么区别呢?

String getName() {
  return 'WinJayQ';
}

main(List<String> args) {
  const name = getName(); // 错误的做法, 因为要执行函数才能获取到值
  final name2 = getName(); // 正确的做法
}

2.2 const放在赋值语句的右边,可以共享对象,提高性能

class Person {
  const Person();
}

main(List<String> args) {
  final a = const Person();
  final b = const Person();
  print(identical(a, b)); // true

  final m = Person();
  final n = Person();
  print(identical(m, n)); // false
}

3.布尔类型

var message = 'Hello Dart';
  // 错误的写法
 //Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
  if (message) { 
    print(message)
  }

4.字符串类型

Dart字符串是UTF-16编码单元的序列。您可以使用单引号或双引号创建一个字符串,可以使用三个单引号或者双引号表示多行字符串:

// 2.表示多行字符串的方式
var message1 = '''
哈哈哈
呵呵呵
嘿嘿嘿''';

5.函数

如果函数中只有一个表达式, 那么可以使用箭头语法(arrow syntax)

sum(num1, num2) => num1 + num2;

5.1函数的参数问题

函数的参数可以分成两类: 必须参数和可选参数

可选参数可以分为 命名可选参数 和 位置可选参数
定义方式:

命名可选参数: {param1, param2, ...}
位置可选参数: [param1, param2, ...]
// 命名可选参数
printInfo1(String name, {int age, double height}) {
  print('name=$name age=$age height=$height');
}

// 调用printInfo1函数
printInfo1('win'); // name=win age=null height=null
printInfo1('win', age: 18); // name=win age=18 height=null
printInfo1('why', age: 18, height: 1.88); // name=win age=18 height=1.88
printInfo1('why', height: 1.88); // name=win age=null height=1.88
// 定义位置可选参数
printInfo2(String name, [int age, double height]) {
  print('name=$name age=$age height=$height');
}

// 调用printInfo2函数
printInfo2('win'); // name=win age=null height=null
printInfo2('win', 18); // name=win age=18 height=null
printInfo2('win', 18, 1.88); // name=win age=18 height=1.88
// 命名可选参数的必传
printInfo3(String name, {int age, double height, @required String address}) {
  print('name=$name age=$age height=$height address=$address');
}
// 参数的默认值
printInfo4(String name, {int age = 18, double height=1.88}) {
 print('name=$name age=$age height=$height');
}

6.匿名函数的使用

某些情况下,给函数命名太麻烦了,我们可以使用没有名字的函数,这种函数可以被称之为匿名函数( anonymous function),也可以叫lambda或者closure。


main(List<String> args) {
  // 1.定义数组
  var movies = ['盗梦空间', '星际穿越', '少年派', '大话西游'];

  // 2.使用forEach遍历: 有名字的函数
  printElement(item) {
    print(item);
  }
  movies.forEach(printElement);

  // 3.使用forEach遍历: 匿名函数
  movies.forEach((item) {
    print(item);
  });
  movies.forEach((item) => print(item));
}

学习内容来自Flutter从入门到实战

上一篇下一篇

猜你喜欢

热点阅读