空的 const 构造函数重要吗?

Squ*_*rel 6 dart

这是一个后续问题

到目前为止,根据我所读到的关于constDart 构造函数的内容,它确保只分配相关类的一个对象。理论上,这可以节省分配空间和执行时间。甚至建议在遵循有效的 Dart设计时尽可能应用它。

现在,假设我们有一个无状态小部件Foo

import 'package:flutter/material.dart';

class Foo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text("Hello world");
  }
}
Run Code Online (Sandbox Code Playgroud)

如果没有定义显式const构造函数,则无法在上下文中使用此小部件const。换句话说,下面的代码片段

import 'package:flutter/material.dart';

class Bar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return const Foo();
  }
}
Run Code Online (Sandbox Code Playgroud)

是非法的。但是,如果在可预见的将来它没有(并且不会有)任何字段,那么const Foo();向该类添加 a 是否还有好处呢?Foo

Rod*_*y R 4

是的,有一个好处。如果可能的话,您应该声明为 const。

根据Flutter 文档

尽可能使用 const 小部件,并为小部件提供 const 构造函数,以便小部件的用户也可以这样做。

其优点与使用默认构造函数和 const 构造函数相同:

  1. 性能(
  2. 您的代码是一致且健全的
  3. 用作注释
  4. 可以在编译开关中使用

您可以使用Lint默认启用 const