我是 flutter 的新手,并且对它的构造函数感到困惑。
例如:
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,
);
}
}
我删除了示例 2 中的 const
和 key
,并且示例 1 和示例 2 都运行良好。
样本 2 是否存在潜在风险?
答案 0 :(得分:1)
当您不希望重建此小部件时,您可以使用 const 构造函数。 常量小部件就像常量 pi,它不会改变。 但是,如果您有状态,那么您想使用示例 2 中的普通构造函数,因为小部件会发生变化并且不能保持不变。
因此,当您在有意义的地方使用 const 时,性能会略有提高(因为它不会被重建)。
关键属性是另一个话题。
答案 1 :(得分:1)
常量
const
关键字的变量在 compile-time
处初始化
并且在 runtime
时已经分配。const
内定义 class
。但是你可以在一个
function
。const
无法在运行时更改。何时使用 const?
-
Use const: If you are sure that a value isn’t going to be changed when running your code. For example, when you declare a sentence that always remains the same.
答案 2 :(得分:0)
当你在构造函数中使用const时,它是编译时常量并且构造函数中给出的所有值都必须是常量,
尝试为 const Constuctor 赋予非常量值以查看差异