Есть экран с блоком MyBloc myBloc
В методе построения экрана это выглядит так:
Widget build(BuildContext context) {
return MyCustomLoadingStack( //My custom widget to have the main content below the loading widget
_buildContent(context), //My main content
_buildLoading(context)); //My loading on top
}
И мой метод 2:
Widget _buildContent(BuildContext context) {
return Column(children: <Widget>[
OtherWidgetOne(),
OtherWidgetTwo(),
BlocBuilder<MyEvent, MyState>(
bloc: myBloc,
builder: (BuildContext context, MyStatestate) {
switch (state.type) {
case MyStateList.doneWorking:
return MyDataWidget(); // this content cares about displaying the data only
default:
return Container(); //otherwise display nothing
}
},
)
]);
}
Widget _buildLoading(BuildContext context) {
return BlocBuilder<MyEvent, MyState>(
bloc: myBloc,
builder: (BuildContext context, MyState state) {
switch (state.type) {
case MyStateList.loading:
return LoadingView(); //This _buildLoading cares the loading only
default:
return Container(); //If it's not loading the show nothing for the loading layer
}
},
)
}
Моя проблема в том, что в данный момент содержимое показывает данные.Когда я yield MyState(type: MyStateList.loading)
, чтобы показать загрузку, когда делать что-то еще (например, загрузить больше для данных, которые в данный момент отображаются).Вызываются оба BlocBuilder
, а затем _buildContent(context)
ничего не показывают, поскольку они не удовлетворяют условию MyStateList.doneWorking
.И, конечно же, _buildLoading(context)
показывает загрузку на пустом содержимом ниже.
Можно ли в любом случае пропустить BlocBuilder внутри _buildContent(context)
, чтобы продолжать показывать текущие данные и при этом сохранять загрузку сверху?
Хотя я хотел бы иметь виджет, содержащий данные или пустой Container()
для использования в случае по умолчанию _buildContent(context)
, но это не имеет смысла для меня, потому что они могут повторно визуализировать один и тот же виджет.
Спасибо, что уделили время.