Dart知识要点

2019-12-27  本文已影响0人  CYC666

1、final 惰性初始化 final time = Date.now();const 在上面这个初始化,报错

2、''' ''' 、""" """多行字符串

3、is 关键字判断类型if (str1 is String) ...

4、~/ 取整,返回int      / 直接除,返回double

5、var b ??= 23; 如果b不为空,则把23赋给b。var b = a ?? 10;    如果a不为空,则把a赋给b,否则把10赋给b。

6、Number => String 使用toStringString => Number 使用prase。 int b = Int.prase(str1);

7、try {} catch (error) {}

8、数组 List    A、反转数组    var list2 = list1.reversed.toList();    B、数组拼接数组    var list2 = list1.addAll(list3);    C、查找索引    list2.indexOf("PINGG");    找到返回索引,找不到返回-1    D、数组成字符串    String str = list2.join(',');    E、字符串转成数组    Var list2 = str.split(',');

9、Set 去重复的数组。使用toList()转成数组

10、字典中是否包含某个键dic.containValue("kkk");

11、遍历      for (var item in list2) {      }      list2.forEach((value) {       });

12、筛选      var list1 = list2.where((value) {          return value > 6;      });

13、只要满足条件就返回true      var b = list1.any((value) {        return value > 6;      });

14、每个都要满足条件就返回true      var b = list1.every((value) {        return value > 6;      });

15、方法可以嵌套,但是有作用域限制,跟变量一样

16、方法的可选参数String grtInfo(String name,[int age,int height]) {if (age != null) {}}

17、方法的默认参数String grtInfo(String name,[int age = 20]) {

}

18、方法的命名参数String grtInfo(String name,{int age}) {

}区别在调用getInfo("xiaoli", age: 20);

19、方法可以作为参数传入到另一个方法里

20、匿名方法var fn = () {};

21、闭包:方法里面嵌套方法,并且返回方法。可以让变量常驻内存,并且不污染全局。fun1 () {var a = 123;return () {a++;printf(a);};}var b = fun();b();b();

22、类class Person {String name = "张三";int age = 23;void printInfo(){pringtf("$name-----$age");pringtf("${this.name}-----${this.age}");}}

23、类的构造方法:实例化类的时候自动调用的方法

// 默认构造方法,只能写一个Person(String name, int age){this.name = name;this.age = age;}

// 默认构造函数的简写Person(this.name, this.age);

// 命名构造函数Person.now(){

}

24、私有属性、方法在命名前面加个下划线_即可将它设置为私有。但是在同一个文件里,还是可以访问

25、get方法,可以通过访问属性的方式去调用方法get area {return a*b;    }

printf("面积=${p.area}");

26、set方法set areaHeight (value) {this.height = value;}

p.areaHeight = 6;

27、使用构造函数时,默认动态初始化属性。初始化列表Person():name="xiaoli",age=23 {

}

28、在属性、方法的声明前面加上static,即可成为静态的属性、方法。       调用的时候,只能通过类名类访问,而不是使用对象去访问。        static String name = '小李';        printf(Person.name);        非静态方法可以访问所有属性,但是访问静态属性时,不使用this。        静态方法无法访问非静态属性、方法

29、对象操作符        ? 条件运算符        as 类型转换        is 类型判断        .. 级联操作符

        Person p;        p?.showInfo(); // 如果为空,不执行        (p as Person).showInfo();        p..name='lixi'          ..age=40          ..showInfo();

30、类的继承 extends,可以继承课件的属性和方法,可以重写父类的方法。不能继承构造方法        class Student extends Person {                // 普通构造方法                Student(String name, Int age, String sex) : super(name, age) {                     this.sex = sex;                }                // 命名构造方法                Student(String name, Int age, String sex) : super.now(name, age) {                     this.sex = sex;                }                // 复写父类的方法                @override // 可写可不写                void showInfo () {                    super.showInfo();                }

        }

31、抽象类(不能被实例化)、抽象方法(子类必须重写)abstract class Animal {eat(); // 抽象方法,不实现。子类必须重写}

32、接口:定义抽象类,接口的实现类,通过implements继承于抽象类,并实现里面的方法33、一个类实现多个接口class C implements A,B {}

34、mixins类似多继承的功能,只能集成来自Object,不能有构造函数class C with A,B {}

35、泛型方法T getData<T> (T value) {return value;}getData<String>('你好');

36、泛型类List

37、异步async同步await()必须用在异步操作里

38、网络请求,引入网络请求库import 'dart:io'

上一篇下一篇

猜你喜欢

热点阅读