我有2个自定义小部件,我想使用相同的Bloc文件。 我的Bloc文件从构造函数中的互联网获取数据。
class MyBloc {
// StreamControllers, StreamSinks, Streams ...
MyBloc() {
getDataFromInternet();
}
}
class MyWidget1 extends StatefulWidget {
MyWidget1({Key key}) : super(key: key);
@override
_MyWidget1State createState() => _MyWidget1State();
}
class _MyWidget1State extends State<MyWidget1> {
MyBloc _bloc;
@override
void initState() {
_bloc = MyBloc();
super.initState();
}
}
class MyWidget2 extends StatefulWidget {
MyWidget2({Key key}) : super(key: key);
@override
_MyWidget2State createState() => _MyWidget2State();
}
class _MyWidget2State extends State<MyWidget2> {
MyBloc _bloc;
@override
void initState() {
_bloc = MyBloc();
super.initState();
}
}
我的问题是,每次屏幕更改时,它都会下载数据(两个小部件中的任何一个都出现在屏幕上)。 是否应该将初始化的bloc对象传递给构造函数中的小部件,而不是在小部件构造函数中创建新的Bloc?我不想保存数据并编写逻辑来检查是否已经下载了它。
答案 0 :(得分:1)
使用此bloc实现https://bloclibrary.dev/ 您的集团目前将具有单一实例,并且具有单一状态。根据以前的状态调用新状态,您将永远不会遇到不必要的查询或类似问题。