微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

const 构造函数和 no_const 构造函数有什么区别?

如何解决const 构造函数和 no_const 构造函数有什么区别?

我是 Flutter 的新手,并且对它的构造函数感到困惑。

例如:

  • 示例 1:
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,);
  }
}
  • 示例 2:
class MyContainer extends StatelessWidget {
  final Color color;
  MyContainer({this.color});

  @override
  Widget build(BuildContext context) {
    return Container(
      color: color,);
  }
}

删除了示例 2 中的 constkey,并且示例 1 和示例 2 都运行良好。

样本 2 是否存在潜在风险?

解决方法

当您不希望重建此小部件时,您可以使用 const 构造函数。 常量小部件就像常量 pi,它不会改变。 但是,如果您有状态,那么您想使用示例 2 中的普通构造函数,因为小部件会发生变化并且不能保持不变。

因此,当您在有意义的地方使用 const 时,性能会略有提高(因为它不会被重建)。

关键属性是另一个话题。

,

常量

  • 带有 const 关键字的变量在 compile-time 处初始化 并且在 runtime 时已经分配。
  • 您不能在 const 内定义 class。但是你可以在一个 function
  • 对于 Flutter 特定的,构建方法中的所有内容都不会 状态更新时再次初始化。
  • 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.

,

当你在构造函数中使用const时,它是编译时常量并且构造函数中给出的所有值都必须是常量,

尝试为 const Constuctor 赋予非常量值以查看差异

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。