更喜欢 const 文字作为 android studio 中 @immutable 类的构造函数的参数

Sha*_*ool 17 jetbrains-ide dart android-studio

在下面的代码中,我收到“更喜欢 const 文字作为 @immutable 类上构造函数的参数”的检查警告,这很烦人。我应该怎么做才能让它消失?

IDE 的截图

Container(
        margin: const EdgeInsets.all(20),
        width: double.infinity,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextField(
              decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Enter a search term'),
            ),
            Text("these are the search results", textAlign: TextAlign.left),
          ],
        ),
      )
Run Code Online (Sandbox Code Playgroud)

我试图让每个构造函数都调用“const”,但没有成功。

Container(
        margin: const EdgeInsets.all(20),
        width: double.infinity,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const TextField(
              decoration: const InputDecoration(
                  border: const OutlineInputBorder(),
                  hintText: 'Enter a search term'),
            ),
            const Text("these are the search results", textAlign: TextAlign.left),
          ],
        ),
      ),
Run Code Online (Sandbox Code Playgroud)

mmc*_*n20 46

只需将列表标记为 const:

Container(
    margin: const EdgeInsets.all(20),
    width: double.infinity,
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: const [
        TextField(
          decoration: InputDecoration(
              border: OutlineInputBorder(),
              hintText: 'Enter a search term'),
        ),
        Text("these are the search results", textAlign: TextAlign.left),
      ],
    ),
  ),
Run Code Online (Sandbox Code Playgroud)

  • 通过将列表设置为“const”,列表中的所有内容都将成为编译时常量。只有当列表中的所有内容都可以是“const”时才能完成此操作。好处是列表只会在编译时创建一次,而不是每次调用周围的“build”方法时创建。 (5认同)
  • 为什么要将列表定义为常量? (2认同)