Flutter 什么';常量构造函数和非常量构造函数的区别是什么?
我不熟悉颤振,对它的构造感到困惑 例如:Flutter 什么';常量构造函数和非常量构造函数的区别是什么?,flutter,dart,widget,Flutter,Dart,Widget,我不熟悉颤振,对它的构造感到困惑 例如: 样本1: 样本2: 我删除了样本2中的const和key,样本1和样本2都工作得很好 示例2中是否存在任何潜在风险?当您不希望重建此小部件时,您会使用const构造函数。 常量小部件就像常量pi,它不会改变。 但是,如果您有state,那么您希望在示例2中使用普通构造函数,因为小部件会发生变化,并且不能是常量 因此,当您在有意义的地方使用const时,性能会略有提高(因为它不会被重建) 密钥属性是另一个主题。当您不希望重建此小部件时,可以使用co
- 样本1:
- 样本2:
const
和key
,样本1和样本2都工作得很好
示例2中是否存在任何潜在风险?当您不希望重建此小部件时,您会使用const构造函数。 常量小部件就像常量pi,它不会改变。 但是,如果您有state,那么您希望在示例2中使用普通构造函数,因为小部件会发生变化,并且不能是常量 因此,当您在有意义的地方使用const时,性能会略有提高(因为它不会被重建)
密钥属性是另一个主题。当您不希望重建此小部件时,可以使用const构造函数。 常量小部件就像常量pi,它不会改变。 但是,如果您有state,那么您希望在示例2中使用普通构造函数,因为小部件会发生变化,并且不能是常量 因此,当您在有意义的地方使用const时,性能会略有提高(因为它不会被重建)
键属性是另一个主题。当您在构造函数中使用const时,它是编译时常量,构造函数中给出的所有值都必须是常量
尝试将非常量值赋给const-constructor以查看差异当您将const与构造函数一起使用时,它是编译时常量,构造函数中给出的所有值都必须是常量 尝试给const constructor赋予非常量值以查看差异const
- 带有
关键字的变量在const
编译时初始化 并且已在运行时分配
- 不能在
类中定义
。但是你可以在一个常量
功能
- 对于特定的颤振,构建方法中的所有内容都不会 状态更新时再次初始化
在运行时无法更改const
如果您确定在运行代码时不会更改某个值,请使用const:。例如,当您声明一个始终保持不变的句子时。
const
- 带有
关键字的变量在const
编译时初始化 并且已在运行时分配
- 不能在
类中定义
。但是你可以在一个常量
功能
- 对于特定的颤振,构建方法中的所有内容都不会 状态更新时再次初始化
在运行时无法更改const
如果您确定在运行代码时不会更改某个值,请使用const:。例如,当您声明一个始终保持不变的句子时。
class MyContainer extends StatelessWidget {
final Color color;
const MyContainer({Key key, this.color}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: color,
);
}
}
class MyContainer extends StatelessWidget {
final Color color;
MyContainer({this.color});
@override
Widget build(BuildContext context) {
return Container(
color: color,
);
}
}