性能优化
性能优化
性能优化
性能优化
identical
检查两个引用是否指向同一个对象:
1
2
3
4
5
6
var o1 = new Object();
// 可以省略 new
var o2 = Object();
print(o1, o2); // false
print(o1, o1); // true
实例话常量构造函数:
const 关键字在多个地方创建相同的对象的时候,内存中只保留了一个对象;
1
2
3
4
5
6
7
8
// o1 o2共享了存储空间
var o1 = const Object();
// 可以省略 new
var o2 = const Object();
print(identical(o1, o2)); // true
print(identical(o1, o1)); // true
1
2
3
4
5
6
print(identical([2], [2])); // false
// 等同于
var a = [2];
var b = [2];
print(identical(a, b)); // false
1
2
3
4
5
6
print(identical(const [2], const [2])); // true
// 等同于
const a = [2];
const b = [2];
print(identical(a, b)); // true
普通构造函数
1
2
3
4
5
6
7
8
9
10
11
class Container {
int width;
int height;
Container({required this.width, required this.height});
}
void main() {
var c1 = new Container(width: 100, height: 100);
var c2 = new Container(width: 100, height: 100);
print(identical(c1, c2)); // false
}
常量构造函数 - const
- 常量构造函数需以
const关键字修饰 const构造函数必须用于成员变量都是final的类- 如果实例化时不加
const修饰符,即使调用的是常量构造函数,实例化的对象也不是常量 - 实例化常量构造函数的时候,多个地方创建这个对象,如果传入的值相同,只会保留一个对象
- Flutter中
const修饰符不仅仅是节省组件构建时的内存开销,Fluter在需要重新构建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 常量构造函数
class Container {
final width;
final height;
const Container({required this.width, required this.height});
}
void main() {
var c1 = new Container(width: 100, height: 100);
var c2 = new Container(width: 100, height: 100);
print(identical(c1, c2)); // false
var c3 = const Container(width: 100, height: 100);
var c4 = const Container(width: 100, height: 100);
print(identical(c3, c4)); // true
}
本文由作者按照 CC BY 4.0 进行授权