Flutter 如何在特定场景中使用颤振阵型?

Flutter 如何在特定场景中使用颤振阵型?,flutter,bloc,flutter-bloc,rxdart,Flutter,Bloc,Flutter Bloc,Rxdart,最近我开始学习Flatter及其BLoC Part10,BLoC库中有很多类,如BLoC,PublishSubject,StreamController,Behavior Subject等 我的问题是,我可以使用这些类的哪些场景?例如,我可以从集团继承,也可以不继承,但为什么?我很困惑,这些类的使用场景是什么?正如您所见,在应用程序中实现Bloc的方法不止一种。您上面提到的类实际上来自不同的包:PublishSubject和BehaviorSubject来自包,而StreamController

最近我开始学习Flatter及其BLoC Part10,BLoC库中有很多类,如
BLoC
PublishSubject
StreamController
Behavior Subject


我的问题是,我可以使用这些类的哪些场景?例如,我可以从
集团继承,也可以不继承,但为什么?我很困惑,这些类的使用场景是什么?

正如您所见,在应用程序中实现Bloc的方法不止一种。您上面提到的类实际上来自不同的包:
PublishSubject
BehaviorSubject
来自包,而
StreamController
位于flift SDK包中

然而,你不需要在你的Flutter应用程序中使用所有或者甚至任何一个来实现Bloc。我将举一个不使用任何包的ImplementBloc示例:

1。以普通方式实施集团:
您可以使用flattersdk中的内容实现Bloc,而无需使用其他包。通常创建一个将逻辑与UI分离的bloc类。该类可能如下所示:

导入'dart:async';
//这是一个处理所有逻辑的类,比如从API接收数据、处理这些数据等等(我称之为数据处理单元)
阶级集团{
//创建一个流,将处理后的数据发送到UI
最终StreamController _someController=StreamController();
Stream get someStream=>\u someController.Stream;
//从API获取数据,然后将数据发送到此处的流。通常是异步函数
void loadData()异步{
final data=wait doYourApiCall();//从API获取数据
var processedData=processYourData(数据);
_someController.add(processedData);
}
处置{
_someController.close();
}
}
同时,在UI中,启动loadData()并使用
StreamBuilder
侦听响应数据:

class\u SomeScreenState扩展状态{
//发起你的阵营
最终的YourBloc _bloc=YourBloc();
//进行loadData()调用
@凌驾
void initState(){
_loadData();
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回StreamBuilder(//使用StreamBuilder侦听数据流
流:_bloc.someStream,
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回中心(子项:CircularProgressIndicator());
返回ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(上下文,索引)=>\u buildYourItem(索引),
);
},
);
}
}
2。那么这些套餐的目的是什么 有一些包可以用来实现Bloc,比如或
flatter\u bloc
提供了一种使用bloc/Event/State概念一致构建bloc的方法,
rx\u dart
提供了许多工具,因此您可以根据自己的需要操纵
流。你可能也会看到上面提到的人,它的主要目的是将一个对象向下传递到小部件树中,并在你的应用程序中创建一个数据流


每一个都已经相当成熟,并由许多程序员实现。我建议,只有在您以普通的方式实施Bloc之后,才能查看其中每一个的文档,这样您才能真正了解他们在幕后做什么。

谢谢您的帮助!