-
静态成员
使用static关键字来实现类级别的变量和函数
静态成员不能访问非静态成员,非静态成员可以访问静态成员
类中的常量需要使用static const声明
访问静态成员
Page.scrollDown();
查看全部 -
初始化列表
跟语法糖一样是在构造方法之前运行
使用逗号分隔初始化表达式
初始化列表用于设置final变量的值
class Person { String name; int age; final String gender; Person(this.name, this.age, this.gender); Person.withMap (Map map) : gender = map["gender"]{ this.name = map["name"]; this.age = map["age"]; } }
Person.withMap (Map map) :this.name = map["name"], this.age = map["age"],gender = map["gender"]{ } }
查看全部 -
工厂构造方法
1、工厂构造方法类似于设计模式中工厂模式
2、在构造方法前添加关键字factory实现一个工厂构造方法
3、在工厂构造方法中可返回对象
class Logger { final String name; static final Map<String, Logger> _cache = <String, Logger>{}; 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); } }
查看全部 -
用const声明对象,需要有常量构造方法
1、如果类是不可变状态,可以把对象定义为编译时常量
2、使用const声明构造方法,并且所有变量都为final
3、使用const声明对象,可以省略
class Person { final String name; final int age; final String gender; const Person (this.name, this.age, this.gender); void work() { print("Name is $name, Age is $age, He is workding"); } }
const person = const Person("Tom", 20, "M");
查看全部 -
Dart构造方法
如果没有自定义构造方法,则会有个默认构造方法
如果存在自定义构造方法,则默认构造方法无效
构造方法不能重载
Dart语法糖
final String gender; Person (this.name, this.age, this.gender);
这种写法是先给属性赋值再执行构造方法,所以可以给final属性赋值是没问题的
想要在Dart使用多个构造方法,则需要命名构造方法
1、使用类名.方法的形式实现
Person.withAge(this.age, this.gender); Person.sad(this.gender);
查看全部 -
计算属性:
计算属性的值是通过计算而来,本身不存储值
计算属性赋值,其实是通过计算转换到其它实例变量
void main(List args) { var rectangle = Rectangle(); rectangle.height = 20; rectangle.width = 10; print(rectangle.area); rectangle.area = 200; print(rectangle.width); } class Rectangle { num width, height; num get area => width*height; set area(value) { width = value/20; } }
查看全部 -
对象
声明new关键字可以省略
类中属性默认生成getter和setter方法
使用final声明的属性只有getter方法
属性和方法通过 . 访问
方法不能被重载
2、类及成员可见性
Dart中的可见性以library(库)为单位
默认情况下,每一个Dart文件就是一个库
使用下划线_表示库的私有性也可以是属性和方法, 其它库不能再导入使用,只能在当前库使用
使用import导入库
查看全部 -
闭包:
闭包是一个方法(对象),闭包定义在其它方法内部,闭包能够访问外部方法内的局部变量,并持有其状态
void main(List args) { var func = a(); func(); func(); } a() { int count = 0; return (){ print(count++); }; }
查看全部 -
匿名方法
(参数1,参数2) {
方法体...
return 返回值
}
匿名方法特性
1、可赋值给变量,通过变量进行调用
2、可在其它方法中直接调用或传递给其它方法
匿名方法不可以直接定义在外部, 要定义在main()方法里
void main(List args) { var func = () { print("hello"); }; func(); }
2、
void main(List args) { var list = ["h", "e", "l", "l", "o"]; print(listTimes(list, (str) { return str*3;})); } List listTimes (List list, String f(str)) { for (var index = 0; index < list.length; index ++) { list[index] = f(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; }
查看全部 -
//Main程序入口 void main(List args) { var list = ["h", "e", "l", "l", "o"]; print(listTimes(list, (str) => times(str))); } List listTimes (List list, String f(str)) { for (var index = 0; index < list.length; index ++) { list[index] = f(list[index]); } return list; } String times(str) { return str*3; } 2、 //Main程序入口 void main(List args) { Function p = printHello; p(); var list = [1,2,3]; } printHello() => print("hello");
查看全部 -
设置默认参数值
1、可使用 = 在可选参数后添加指定默认值
查看全部 -
break 终止当前循环体,若被包含不影响父循环执行
continue 跳过符合条件的一次循环
查看全部 -
Map创建
1、创建Map:var lan = {'key' : 'value','key' : 'value','key' : 'value'...}
2、创建不可变Map: var lan = const {'key' : 'value','key' : 'value','key' : 'value'...}
3、构造创建:var lan = new Map();
查看全部 -
List(数组)创建
1、创建List : var list = [1,2,3];
2、创建不可变的List:var list = const[1,2,34]
3、构造创建:var list = new List();
常用方法
insert()插入, 原有数据往后顺延
indexOf() 查字符所在索引并返回, 没有找到返回-1
sublist()截取
查看全部 -
布尔型
1、使用bool表示
2、只有true、false两个值
查看全部
举报