面试题答案
一键面试方法
使用 const
构造函数创建 StatelessWidget
实例。例如:
class MyStatelessWidget extends StatelessWidget {
const MyStatelessWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
在使用时:
const myWidget = MyStatelessWidget();
原理
- 常量折叠:当使用
const
构造函数创建StatelessWidget
实例时,Dart 编译器会进行常量折叠。这意味着如果多个地方使用了相同的const
表达式创建StatelessWidget
,编译器会将它们识别为同一个对象。例如,如果在不同位置都写const MyStatelessWidget()
,实际上它们指向的是内存中的同一个实例。 - 减少重建判断:Flutter 的渲染机制在判断是否需要重建
Widget
时,对于const
类型的Widget
,只要其类型和key
(如果有)相同,就不会触发重建。因为const
Widget
的属性在编译期就确定且不可变,Flutter 框架可以高效地复用这些Widget
,从而减少不必要的重建,提升性能。