扑。如何升级您的BLoC

有许多实现BLoC模式的库。但是我要谈论的那个很不寻常,叫做isolate_bloc。



顾名思义,这是一种不寻常的块,其独特之处在于它可以在单独的隔离中(以下称为隔离)工作,并且不会降低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上的页面,以供进一步研究此处描述了所有功能,还有更复杂的示例。



All Articles