顾名思义,这是一种不寻常的块,其独特之处在于它可以在单独的隔离中(以下称为隔离)工作,并且不会降低UI的速度。
常规集团有什么问题?
除了样板之外,还有另一个问题-它可在主线程中工作,因此诸如解析json之类的繁重任务可能会导致UI冻结。
诸如simple_bloc或cubit之类的库可以帮助解决第一个问题。从第二个-隔离,或在其上的包装-计算。原则上,这是很多人使用的非常好的组合,但即使它不能解决所有问题。例如,您不能单独使用MethodChannel,原则上,它的使用会带来不便和样板。
隔离集团
该库有助于使用BLoC模式并解决许多任务,例如使用隔离和MessageChannel。另外,它允许您在编写块本身时减少代码量。
如何使用它?
要了解如何使用此库,我们来看一个简单的示例。
尽管我试图进一步详细描述所有事实,但有些事情可能仍然令人难以理解,因此可以假定您已经熟悉BLoC模式。
任何颤动的项目都从一个计数器开始,因此我们也将从该计数器开始。第一步是编写块本身。
在第3行中,我们创建了一个CounterBloc类,该类继承自IsolateBloc类。在这里,我们指示块的事件和状态的类型。
在第4行,我们传递计数器的初始状态
-0。从第6行到第9行,我们重写onEventReceived方法,该方法在收到新事件时调用。 State是一个getter,它返回该块发送到UI的最后一个状态。
在第8行,我们使用发出函数,该函数获取状态并将其发送到UI。
现在您需要注册该块。
由于它在单独的隔离环境中工作,因此我们无法直接创建它。因此,您需要使用register函数让库知道它的存在。
在第5行中,我们初始化库并传递将在隔离块和寄存器块中运行的函数。
在第10行,我们注册CounterBloc-现在库将能够根据我们的请求创建它。
它仅用于描述UI!
在第8行,我们创建一个块并将其添加到小部件树中。
在第23行,我们监听块的状态。 IsolateBlocBuilder的工作方式类似于StreamBuilder,但它可以在小部件树本身中找到该块。
从第31行到第33行,我们使用扩展方法isolateBloc <Bloc,State>()从上下文中获取一个块,并使用add()函数向其添加新事件。
就这样,现在您可以开始了!
决赛
通过一个基本示例,我展示了如何使用此库,并建议您进一步阅读github上的页面,以供进一步研究。此处描述了所有功能,还有更复杂的示例。