Возможно, вы можете передать свой диалог в качестве обратного вызова:
- Создайте действия запроса следующим образом:
class MyDataRequestAction {
...
Function onError;
MyDataRequestAction({this.onError});
}
- На ваших экранах отправьтеэти действия в StoreConnector, например,
@override
Widget build(BuildContext context) {
...
StoreConnector<AppState, _MyScreenViewModel>(
onInit: (store) => store.dispatch(MyDataRequestAction(
onError: () => showDialog(context: context, builder: (context) => AlertDialog(...));
));
...
- и, наконец, в вашем промежуточном программном обеспечении:
class MyMiddleware extends MiddlewareClass<AppState> {
...
@override
void call(Store<AppState> store, action, NextDispatcher next) async {
...
_setCompanionToChat(groupChatId, action) // PASS THE ACTION!!
}
void _setCompanionToChat(String groupChatId, dynamic action) {
...
if (snapshot.exists && !closed) {
// SOME OPERATIONS
} else {
action.onError();
}