【问题标题】:What's the difference between const constructor and no_const constructor?const 构造函数和 no_const 构造函数有什么区别?
【发布时间】:2021-03-30 08:21:35
【问题描述】:

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

例如:

  • 样本 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 中删除了 const 和 key,示例 1 和示例 2 都运行良好。

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

【问题讨论】:

    标签: flutter dart widget


    【解决方案1】:

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

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

    关键属性是另一个主题。

    【讨论】:

      【解决方案2】:

      常量

      • 带有const 关键字的变量被初始化为compile-time 并且在 runtime 时已分配。
      • 您不能在class 中定义const。但是你可以在一个 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.

      【讨论】:

        【解决方案3】:

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

        尝试为 const 构造函数赋予非恒定值以查看差异

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-23
          • 1970-01-01
          • 2019-08-30
          • 1970-01-01
          • 1970-01-01
          • 2011-10-17
          • 2015-02-13
          • 1970-01-01
          相关资源
          最近更新 更多