首页 > 解决方案 > 同一棵树中同一肘(局部范围)的不同实例

问题描述

在树中创建相同块/肘的多个实例是不好的做法吗?我正在创建一个 cubit 的实例,并在树中的几个位置使用它,就像这样。

BlocBuilder<BlocA, BlocAState>(
  cubit: blocA, // provide the local cubit instance
  builder: (context, state) {
    // return widget here based on BlocA's state
  }
)

...但是使用此方法将块范围限定为单个小部件。我在小部件树中使用了这种技术 3 次(将我的小部件分成不同的类)。我的控制台正在从BlocObserver. 集团“工作”,但我怀疑我做事的方式不正确......

标签: flutter

解决方案


似乎您误解了为小部件树提供 bloc 实例的核心概念。您需要BlocBuilder为依赖于 bloc 的小部件设置BuildContext,并最小化小部件的范围,这些小部件将被标记为在 bloc 更改时重建。是的,拥有多个 bloc 实例是非常糟糕的做法,因为它几乎会抵消它对您的应用程序的有用性。要为您的小部件提供单个实例,请使用BlocProviderBlocProvider.value,有关它的更多信息,您可以在此处此处查看


推荐阅读