asynchronous - Flutter Redux snackbar

标签 asynchronous redux flutter snackbar

我在 flutter 代码中使用 redux。我有一个按钮,按下时会发送一个 Action 来调用异步 API(在我的中间件中)。我想要做的是当 api 调用执行并返回响应时,我想显示 snackbar ,说明它已成功更新数据或错误消息。我的问题是如何通过调度一个 Action 来显示它。或者有没有更好的方法在 redux 中做到这一点?

最佳答案

免责声明: 这不是在 IDE 中编写并运行的代码。它只是描述问题解决方案的一种方式。可能有错误。

假设您拥有 Redux 存储并使用异步进行 API 调用。

您的页面小部件:

... 

_onSubmit(Store<MyState> store) {
   store.dispatch(new SubmitAction(onCompleted: _onCompleted, onError: _onError))

}

_onCompleted() {
    Scaffold.of(context).showSnackBar(new SnackBar(
       content: new Text("Item Completed")));

}

_onError(error) {
    Scaffold.of(context).showSnackBar(new SnackBar(
       content: new Text("Error Occurred")));
}

你的 Redux 中间件:

apiMiddleware(Store<MyState> store, action, NextDispatcher next) {

    if(action is SubmitAction) {
        yourAPICall()
            .then((data) => action.onCompleted())
            .catchError((e) => action.onError(error));
    }

    next(action);
}

MyAction 类:

typedef void VoidCallback();
typedef void ErrorCallback(error);
class MyAction {
   MyAction({this.onCompleted, this.onError})

   VoidCallback onCompeleted;
   ErrorCallback onError;
}

其中一些可以通过 future 来完成,但这很简单。

关于asynchronous - Flutter Redux snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887690/

相关文章:

javascript - 如何将 afterEach 与 Mocha 异步单元测试一起使用?

unit-testing - 当预期/接收值是对象时,Jest.js 测试不会通过

flutter - 如何在 json 列表中为每个 map 显示单独的数据表和文本?

javascript - Promise 返回错误值

ios - NSURLSessionDownloadTask 有时会导致零数据

node.js - 为什么我需要刷新页面才能获得新状态React Express

javascript - Axios API get request with Redux not able to pass in variable in action

javascript - 在 API 请求的客户端应用程序中存储用户 ID

flutter - flutter 到新路线

Flutter showSnackBar 在 null 上调用