在 Consumer builder 中,使用 child 和 const 有什么不同吗?

In Consumer builder, is there any different between using child and const?

我知道子参数用于告诉构建器不要在每次数据更改时重新构建该小部件。

但这不就是const的定义吗?为什么不用 const 代替。

Consumer<String>(
  builder: (context, value, child) => Badge(
    child: const IconButton(
      icon: Icon(Icons.shopping_bag),
      onPressed: () {},
    ),
    badgeContent: Text(value),
  ),
)

Consumer<String>(
  builder: (context, value, child) => Badge(
    child: child,
    badgeContent: Text(value),
  ),
  child: IconButton(
    icon: Icon(Icons.shopping_bag),
    onPressed: () {},
  )
)

有什么不同吗?

当数据更改时,您小时候传递的任何小部件都不会重建。

您可以避免使用 child 不必要地重建小部件。

无论是 const Widget 还是普通 Widget,当您将其保存在子组件中时,当发生更改时,该 widget 将不会重建。