android - Flutter with Redux : How to show alert from middleware? 在哪里可以获得 BuildContext

标签 android redux flutter

在我使用 Redux 架构的 Flutter 聊天应用程序中,我需要在某些异步调用的结果后显示对话框。我的主要问题是获取当前的 BuildContext 以显示对话框。这个异步调用可以从不同的屏幕完成,我需要当前屏幕的上下文。

我在中间件方面的调用如下所示:

void _setCompanionToChat(String groupChatId) {

  var documentReference = _getChatDocument(groupChatId);

  documentReference.get().then((snapshot) {
     var closed = snapshot[ChatDatabase.CLOSED_ATTRIBUTE];

     if (snapshot.exists && !closed) {
         // SOME OPERATIONS
     } else {
        //  SHOW DIALOG
     }
  });
}

有什么建议吗?

最佳答案

也许您可以将对话框作为回调传递:

  • 按以下方式创建请求操作:
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();
    }

关于android - Flutter with Redux : How to show alert from middleware? 在哪里可以获得 BuildContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947433/

相关文章:

android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别)

java - 无法使用字符串作为选项卡名称

javascript - 在 React-Redux 应用程序中应将实用函数放在哪里?

reactjs - 如何在 TypeScript 接口(interface)中指定具有多个对象的数组?

flutter - 如何提供Future <String>以在Dart中流式传输需要String的流?

html - Assets 图像未在 flutter-ios 中呈现。如何在不使用 webview 的情况下在 flutter 中渲染 html <img src ...> 标签内的本地 Assets 图像?

android - 自定义方形布局未按预期工作

java - 如何纠正这个查询?

javascript - Angular/Redux 保持状态的正确方法

dart - 单独处理应用栏