【发布时间】:2020-12-29 18:22:41
【问题描述】:
我有 2 个自定义小部件,我想使用同一个 Bloc 文件。 我的 Bloc 文件在构造函数中从 Internet 获取数据。
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 吗?我不想保存数据并编写逻辑来检查我是否已经下载了它。
【问题讨论】:
-
您可以在触发这两个小部件的父小部件上使用 bloc 并传递所需的数据。